Android 1.6
有一组这样的对象
public class MyItem {public String name = "";public String brIEf = ""; public int availiableweight = 0; public Node xmlpoint = null;@OverrIDepublic String toString(){ return name;}public MyItem(String _brIEf, String _name, Node _xmlpoint){ name = _name; brIEf = _brIEf; xmlpoint = _xmlpoint;} }
对象存储在array:ArrayList itemsList中
项目在微调器的下拉列表中可见,但我无法选择任何项目.未生成事件OnItemSelectedListener.微调控件是空的.我的错在哪里?
申请代码
public class MyActivity extends Activity {/** Called when the activity is first created. */private ArrayList<MyItem> itemsList;private Spinner mySpinner;@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); mySpinner = (Spinner) findVIEwByID(R.ID.mySpinner); itemsList = new ArrayList<MyItem>(); ArrayAdapter<MyItem> myAdapter = new ArrayAdapter<MyItem>(this, androID.R.layout.simple_spinner_item, itemsList); myAdapter.setDropDownVIEwResource(androID.R.layout.simple_spinner_dropdown_item); mySpinner.setAdapter(myAdapter); mySpinner.setonItemSelectedListener(new OnItemSelectedListener() { @OverrIDe public voID onItemSelected(AdapterVIEw<?> arg0, VIEw arg1, int arg2, long arg3) { // Todo auto-generated method stub AlertDialog("Pos: " + arg2); } @OverrIDe public voID onnothingSelected(AdapterVIEw<?> arg0) { // Todo auto-generated method stub } }); itemsList.add(new MyItem("1","one",null)); itemsList.add(new MyItem("2","two",null)); itemsList.add(new MyItem("3","three",null));} }
layout main.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="fill_parent"androID:layout_height="fill_parent"androID:orIEntation="vertical" ><TextVIEw androID:ID="@+ID/textVIEw1" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="TextVIEw" /><linearLayout androID:ID="@+ID/linearLayout1" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" > <TextVIEw androID:ID="@+ID/languageText" androID:layout_wIDth="wrap_content" androID:layout_height="fill_parent" androID:text="Language" androID:gravity="center_vertical"/> <Spinner androID:ID="@+ID/languageSpinner" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_weight="1" androID:prompt="@string/chooseitem"/></linearLayout></linearLayout>
解决方法:
你的问题在这里:
ArrayAdapter<MyItem> myAdapter = new ArrayAdapter<MyItem>(this, androID.R.layout.simple_spinner_item, itemsList);
由于您有一组自定义对象,因此无法使用通用ArrayAdapter类.在ArrayAdapter的构造函数中,您使用androID.R.layout.simple_spinner_item布局文件.但适配器不知道如何显示您的数据.
您必须使用自定义适配器并创建自己的XML布局文件.
阅读一些如何实现这一目标的例子.最好了解ListVIEw和适配器的工作原理.
看到这些链接:
http://android.vexedlogic.com/2011/04/02/android-lists-listactivity-and-listview-i-basic-usage/
http://android.vexedlogic.com/2011/04/02/android-lists-listactivity-and-listview-ii-%E2%80%93-custom-adapter-and-list-item-view/
它们提供了非常好的参考.您可以继续阅读“AndroID列表”系列教程的下一部分,以扩展您的知识.
希望这可以帮助.如果您需要进一步解释,请务必发表评论.
总结以上是内存溢出为你收集整理的android – 自定义ArrayAdapter和Spinner.没有项目选择全部内容,希望文章能够帮你解决android – 自定义ArrayAdapter和Spinner.没有项目选择所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)