android– 自定义ArrayAdapter和Spinner.没有项目选择

android– 自定义ArrayAdapter和Spinner.没有项目选择,第1张

概述Android1.6有一组这样的对象publicclassMyItem{publicStringname="";publicStringbrief="";publicintavailiableweight=0;publicNodexmlpoint=null;@OverridepublicStringtoString(){returnname;}publicMyItem(

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.没有项目选择所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存