Android - Listview忽略了TouchEvent

时间:2014-01-17 08:30:51

标签: android listview

我有一个ListView包含RelativeLayout - 包含TextButtons和其他内容的项目。我想对用户点击按钮做出反应,但出于某种原因,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
         }
    }
});

1 个答案:

答案 0 :(得分:3)

你可以添加

android:descendantFocusability="blocksDescendants"

到ListView行的根/顶部布局或

添加以下属性

android:focusable="false"
android:focusableInTouchMode="false"

到ListView行项目中的按钮。这是阻止onItemClick被调用的原因。你也应该避免像

这样的事情
 if (v.getId() == R.id.csi_buy)

onItemClick内,因为返回的视图是行,而不是您单击的项目。要管理视图的点击,您应该使用View.OnClickListener