私はAndroid開発を始めており、サンプルアプリケーションには次のように入力するListViewがあります。
ListView listView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getEntityLabels());
listView.setAdapter(adapter);
これgetEntityLabels()
は、文字列のリストを返す関数です。
基礎となるモデルでは、ラベルは一意ではありません。代わりに、各エンティティには、エンティティid
ごとに一意のフィールドがあります。
class Entity{
int id;
String label;
}
ユーザーがリストビューのアイテムをクリックしたときに、いくつかの処理を実行したいと思います。そこで、次のようにItemClickListenerを追加しました。
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
//I would like to get the Id of the Entity, not just the label
}});
id
処理はエンティティのに依存します。ただし、リスト内のビューは単なるテキストであり、ラベルのみが含まれているため、アクセスできません。
id(私の場合)のような情報をビューに埋め込む方法や、id
sを取得する別の方法はありますか?
ラベルを返し、の代わりに使用するtoString()
メソッドをオーバーライドできる方法を知っています。しかし、私はこれを探していません。可能であれば、任意のビューに任意の情報を埋め込むことができる、より一般的な方法を探しています。Entity
ArrayAdapter<Entity>
ArrayAdapter<String>