自定义ArrayList到Spinner



我希望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,现在我想在微调器中输入数组列表中的所有名称。

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

谁知道这是否可能?

我在我的类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));

当用户点击项目时,您将得到一个回调,方法如下:

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

适配器接口指定getItem(int)方法,您可以使用该方法来获取对象。在您的情况下,用户单击的项目是一个"Type"对象。

这样的东西会起作用:

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

当您在选择项目时从Spinner获得onItemSelected回调时,它会向您的ArrayList提供索引,您可以使用该索引查找已选择的Type

覆盖自定义ArrayAdapter<Type>中的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);
}

最新更新