listView的长按事件有效,点击却失效
今天在做一个Android项目的时候,遇到了一个问题,我为 listView设置了点击 和长按事件,也就是 setOnItemLongClickListener和 setOnItemClickListener方法。源码部分如下:
//添加listview长按事件
userlist.setOnItemLongClickListener(new
AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
View v=userlist.getChildAt(position);
//获取学号
TextView t=(TextView) v.findViewById(R.id.textView0);
String itemid=t.getText().toString();
showDataAgin(itemid);
return true;
}
});
//添加listview点击事件
userlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "Long click to modify or delete data", Toast.LENGTH_SHORT).show();
}
});
这样设置后,进入模拟设备,点击listview,长按事件响应了,点击事件却没有响应,在点击事件中添加
System.out.println("running");
查看运行信息,也没有显示点击事件在运行。百思不得其解。后来我查看listView的item.xml文件中,textView中有添加 android:longClickable="true"这样一句,查询后知道,这句代码的意思是定义TextView是否对长按事件做出反应。实验删除之,看看效果。然后运行程序,点击事件响应了,那么说明是这句代码会屏蔽listView的点击事件。删除了后,listView的长按和点击事件依然可以生效。
如果无法查看博客中的图片,请挂代理访问,因为图片是存储在GitHub上的。

浙公网安备 33010602011771号