3

私は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(私の場合)のような情報をビューに埋め込む方法や、idsを取得する別の方法はありますか?

ラベルを返し、の代わりに使用するtoString()メソッドをオーバーライドできる方法を知っています。しかし、私はこれを探していません。可能であれば、任意のビューに任意の情報を埋め込むことができる、より一般的な方法を探しています。EntityArrayAdapter<Entity>ArrayAdapter<String>

4

1 に答える 1

2

タグを使用して、アダプタの各ビュー セットにタグを割り当てることができます。次に、OnClickListener でクリックされたビューからタグを読み取って続行できます。タグは好きなもの(オブジェクト)にすることができるので、問題を解決するはずです。setTag()および関連を参照してください。

于 2012-09-16T20:23:31.337 に答える