我希望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);
}