17

我在arrayadapter中添加了arraylist,其中包含每个由两个元素/项目组成的对象,我已经成功地为setListAdapter设置了该适配器,现在我想在listview的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             
   }
 });
4

7 回答 7

57
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    int color = parent.getAdapter().getItem(position);
}
于 2012-08-28T10:19:33.120 回答
7
public void onItemClick(AdapterView<?> parent, View view,int position, long id){
    something = tweets[position];
}
于 2011-08-16T04:20:27.460 回答
2

并且如果您已准备好包含所有数据的列表视图并希望仅获取对象的值,请使用:

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

我的列表视图是“ listprod ”,我想在位置0中获取值,其中textnomprod是我的对象,我保存在我的变量tvTest

于 2014-12-30T19:38:46.603 回答
2

你想得到这些物品并用它们做什么?

例如,您可以像这样发送 Toast 消息。

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

    }

希望这可以帮助。

于 2011-08-16T04:27:29.183 回答
0

我通过使用为其设置的适配器解决了这个问题。

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。

通过这种方式,您可以访问所需对象的属性。

于 2017-09-12T12:28:27.690 回答
0
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
        Windows clickedObject = adapter.get(position);
    }
}

考虑上面的例子,

  • 列表视图中使用的对象名为Windows
  • 在列表视图中单击的项目的对象名为clickedObject
  • 使用的数组列表称为适配器

另外,请确保在您的 ArrayList 前面加上final

于 2017-06-13T11:55:08.283 回答
-2

getListView().getItemAtPosition(position)Object在您的TweetListAdaptor

于 2013-02-17T15:10:25.580 回答