2012-02-17 60 views
0

我有一个从项目与返回列表视图中的文本onListItemClick:onListItemClick从该项目当前视图顶部返回数据

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    // Get the item that was clicked 
    TextView tv = (TextView)findViewById(R.id.item_title); 
    Toast.makeText(getApplicationContext(), (tv).getText(), 
      Toast.LENGTH_SHORT).show(); 
} 

的问题是它返回的数据是从该项目的当前列表视图的顶部没有被点击的实际列表项目。为了说明,如果我有像这样

A 
----- (Start of Viewable area) 
B 
C 
D 
------(End of viewable area) 
E 

列表如果我点击项目d土司将返回标题为项目B.任何想法我怎么能解决这个问题?

+0

你不能使用类似'l.getItemAtPosition(position))'的东西吗? – 2012-02-17 21:19:59

+0

你的名单有什么类型的数据?字符串或textview? – kosa 2012-02-17 21:21:42

+0

Textview和Imageview。 – Nick 2012-02-17 21:22:32

回答

2

该方法从您的自定义ListView中调用,是否正确?从我所知道的情况来看,“findViewById”是在整个ListView中搜索ID为“R.id.item_title”的视图。由于屏幕上有多个列表项目,因此它将拉动顶部项目。相反,请致电

// Call on the child view provided as a parameter, instead of on the ListView 
TextView tv = (TextView)v.findViewById(R.id.item_title); 

以便它搜索作为参数“v”传递的View对象的子视图。

+0

天才!您在所有帐户中都是正确的,谢谢:) – Nick 2012-02-17 21:54:16