授業がある
public class User
{
UUID id;
String name;
}
ListViewにこれを渡したい:「名前」だけをリストして表示する。しかし、リストビューのアイテムが選択されるとき、選択されたアイテムの「id」を知りたいです。
授業がある
public class User
{
UUID id;
String name;
}
ListViewにこれを渡したい:「名前」だけをリストして表示する。しかし、リストビューのアイテムが選択されるとき、選択されたアイテムの「id」を知りたいです。
まず、両方の情報を含むクラスを作成します。
public class MyItem {
public final String name;
public final String id;
public MyItem(String name, String id) {
this.name = name;
this.id = id;
}
}
次に、このクラスをサポートできるカスタムアダプタを作成します。
public class CustomAdapter extends ArrayAdapter<MyItem> {
private Context context;
private ArrayList<MyItem> items;
private LayoutInflater vi;
public EntryAdapter(Context context,ArrayList<MyItem> items) {
super(context,0, items);
this.context = context;
this.items = items;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
final Item i = items.get(position);
if (i != null) {
v = vi.inflate(R.layout.list_item, null); //custom xml for desired view
//do what ever you need to
}
return v;
}
}
MyItemの配列にデータを入力し、配列を使用してカスタムアダプタを作成します。
items = new ArrayList<MyItem>(); // then populate it
myAdapter = new CustomAdapter(this, items);
次に、ListViewを設定し、OnItemClickListenerを使用します
myList.setAdapter(myAdapter);
myList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View view, int position,
long id)
{
((MyItem)myAdapter.getItem(position)).id); //this line gets you the id of the clicked item
}
});
オブジェクトを配列リストに格納します。
Arraylist<User> al = new ArrayList<User>();
次に、を使用してオブジェクトを配列リストに追加します
User user = new User();
user.id = somevalue;
user.name = someNameValue;
al.add(user);
次にonitemclick()でアイテムをクリックし、次にarraylistアイテムを使用して表示します
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(this, "item clicked is " + arg2+al.get(arg2).id+" "al.get(arg2).name,
Toast.LENGTH_SHORT)
.show();
}
}