在我的android应用中,我有以下代码:
public void goToCaptureBonus (View View) {
String tappedBonus = ((TextView) findViewById(R.id.bonusListCode)).getText().toString();
Log.e(TAG,"goToCaptureBonus, tapped bonus = " + tappedBonus);
Intent goToCaptureBonus = new Intent(this,captureBonus.class);
goToCaptureBonus.putExtra("codeTapped",tappedBonus);
startActivity(goToCaptureBonus);
}
每当我点击一行时,日志总是显示第一行(在这种情况下为AK1)。我知道ListView正在制作一行,并重复它;但是每一行的值都可以正确显示。为什么上面的代码总是返回第一行,而不是返回被窃取的行中的值?
答案 0 :(得分:1)
documentation of findViewById()
说
查找具有给定ID的第一个子代视图...
您是否有可能在活动或常规列表视图的上下文中而不是在选定的(点击的)视图中使用findViewById()
?
如果在视图上点击了函数的view
参数,则可能应该这样做:
view.findViewById(R.id.bonusListCode)
不只是
findViewById(R.id.bonusListCode)
答案 1 :(得分:1)
如果使用ListView,则应使用OnItemClickListener
。这是一个示例如何执行此操作。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//use the position variable to get the list item from the list
String selection = itemsArray[position]; // this will give the selected item
}
});
现在,只要轻按ListView上的某个项目,就会调用方法onItemClick()
。在这里您可以获得选择。