web-dev-qa-db-ja.com

AndroidのsetOnItemClickListenerのリストビューからオブジェクトを取得する方法は?

それぞれが2つの要素/アイテムで構成されるオブジェクトを含むarraylistをarrayadapterに追加しました。そのアダプターをsetListAdapterに正常に設定しました。次に、リストビューのsetOnItemClickListenerでそれらのアイテムを取得します。

これが私のコードです

   TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
   setListAdapter(adaptor); 
   ListView lv = getListView();
   lv.setTextFilterEnabled(true);
   lv.setOnItemClickListener(new OnItemClickListener() 
   {
   public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {
     //here i want to get the items             
   }
 });
16
Ramamoorthy
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    int color = parent.getAdapter().getItem(position);
}
52
u-rick
public void onItemClick(AdapterView<?> parent, View view,int position, long id){
    something = tweets[position];
}
6
Cristian

あなたはアイテムを手に入れて、それらで何をしたいですか?

たとえば、このようなトーストメッセージを作成できます。

public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    {
        Toast.makeText(getApplicationContext(), tweets[position], Toast.LENGTH_SHORT).show();

    }

お役に立てれば。

2
utamanna

また、すべてのデータを含むリストビューを用意していて、オブジェクトの値を取得したい場合は、次を使用してください。

ViewGroup row = (ViewGroup) listprod.getChildAt(0);
TextView tvTest = (TextView) row.findViewById(R.id.textnomprod);

リストビューが "listprod"で、位置の値を取得したい場合、ここでtextnomprodはオブジェクトであり、変数に保存していますtvTest

2
Ismael Fdez
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
        Windows clickedObject = adapter.get(position);
    }
}

上記の例で考えてみましょう。

  • リストビューで使用されるオブジェクトの名前はWindows
  • リストビューでクリックされたアイテムのオブジェクトの名前はclickedObject
  • 使用される配列リストはadapterと呼ばれます。

また、ArrayListの前にfinalを付けるようにしてください。

0
Mishka

設定されているアダプターを使用して、この問題を解決しました。

TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
setListAdapter(adaptor); 
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {    
        //here i want to get the items  
        adaptor.getItem(position);   // this is your object
    }
});

アダプタを初期化してListViewに設定する必要があることに注意してください。

このようにして、必要なオブジェクトのプロパティにアクセスできます。

0
Mahdi Moqadasi