2011-08-16 29 views
15

我已经在arrayadapter中添加了arraylist,其中包含的对象每个都包含两个元素/项目,我已经成功为setListAdapter设置了该适配器,现在我想要在listview的setOnItemClickListener中获取这些项目。如何从Android中的setOnItemClickListener中的ListView中获取对象?

这里是我的代码

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    
    } 
}); 

回答

6
public void onItemClick(AdapterView<?> parent, View view,int position, long id){ 
    something = tweets[position]; 
} 
+0

显然这是唯一的解决方案 –

2

你想要得到的项目,与他们无关呢?

例如,您可以制作Toast这样的消息。

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

    } 

希望这会有所帮助。

48
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    int color = parent.getAdapter().getItem(position); 
} 
+0

谢谢。它对我非常有帮助。 – Ark

+0

最正确的答案 –

+0

太棒了,这就是答案 – Ramon

-2

getListView().getItemAtPosition(position)会在你TweetListAdaptor

2

返回Object,如果你有列表视图愿与所有提交的数据,并希望得到一个客体只能使用一个值:

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

在哪里我的列表视图是“listprod”,我想要得到的值在,其中textnomprod是我的客体和IM节省我的变量tvTest

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

考虑在上面的例子中,在ListView被命名为的Windows使用

  • 对象,
  • 的对象在列表视图中点击的项目被命名为clickedObject,
  • 所使用的数组列表被称为适配器

此外,请确保在您的ArrayList前加最后

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。

以这种方式,你可以访问你想要的对象的属性。

相关问题