【问题标题】:Custom ArrayList to Spinner自定义 ArrayList 到 Spinner
【发布时间】:2014-10-24 09:48:28
【问题描述】:

我希望我的ArrayList 中的每个名字都放入数组适配器或微调器中。

我有一个ArrayList<Type> types

Type类:

public class Type{

   int id;
   String name;

   public Type(int id, String name) {
       this.id = id;
       this.name = name;
   }
}

我也有一个Spinner,现在我想在微调器中包含 arraylist 中的所有名称。

但如果我从微调器中选择一个名称,我还想知道名称中的 id 是什么。

谁知道这是否可行?

【问题讨论】:

    标签: java android arraylist spinner


    【解决方案1】:

    我在课堂上添加了这个Type

    public String toString() {
            return id;
        }
    

    并将列表设置为 ArrayAdapter

     ArrayAdapter<Type> adapter = new ArrayAdapter<Type>(Checklist.this, android.R.layout.simple_spinner_item, types);
        spinner.setAdapter(adapter);
        //this Logs the correct id (:
        Log.e("test", String.valueOf(types.get(spinner.getSelectedItemPosition()).id));
    

    【讨论】:

      【解决方案2】:

      当用户点击该项目时,你会在这样的方法中得到一个回调:

      public void onListItemClick(ListView l, View v, int position, long id);
      

      适配器接口指定getItem(int)方法,可以用来获取对象。在您的情况下,用户单击的项目是“类型”对象。

      这样的事情会起作用:

      Adapter adapter = listView.getAdapter();    // somehow obtain your adapter
      Type item = (Type) adapter.getItem(position); 
      int id = item.id;
      

      【讨论】:

        【解决方案3】:

        当您从Spinner 中获得onItemSelected 回调时,当一个项目被选中时,它会在您的ArrayList 中提供索引,您可以使用该索引来查找选择了哪个Type

        【讨论】:

          【解决方案4】:

          在您的自定义ArrayAdapter&lt;Type&gt; 中覆盖getItemId(int position)

          @Override
          public long getItemId(int position){
              return getItem(position).id;
          }
          

          OnItemClickListener#onItemClick() 被调用时,它会传递你的id

          public void onListItemClick(ListView l, View v, int position, long id){
              doSomethingWithYourType(id);
          }
          

          【讨论】:

            猜你喜欢
            • 2020-05-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-17
            相关资源
            最近更新 更多