我有一个ListView
包含RelativeLayout
- 包含Text
,Buttons
和其他内容的项目。我想对用户点击按钮做出反应,但出于某种原因,onItemClick
未被触发
你有什么想法可能会引起什么?
storeItems = (ListView) findViewById(R.id.st_storeitems);
storeItems.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3)
{
Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();
if(v.getId() == R.id.csi_buy) {
// Some Code
}
}
});
答案 0 :(得分:3)
你可以添加
android:descendantFocusability="blocksDescendants"
到ListView行的根/顶部布局或
添加以下属性
android:focusable="false"
android:focusableInTouchMode="false"
到ListView行项目中的按钮。这是阻止onItemClick
被调用的原因。你也应该避免像
if (v.getId() == R.id.csi_buy)
在onItemClick
内,因为返回的视图是行,而不是您单击的项目。要管理视图的点击,您应该使用View.OnClickListener