关于onItemClick和onItemLongClick同时执行的一般性解决方法
2013-12-28 16:22
232 查看
在安卓开发中,相信很多安卓开发的朋友都会用到ListView控件,但是在使用ListView控件的时候,会遇到这样的一些问题:当Listview的某一行有button存在时,无法弹出contextMenu;onItemClick和onItemLongClick同时执行(也就是onItemClick和onItemLongClick事件同时触发)的等问题,下面看一些关于ListView的常见问题。
(1)ListView.setOnItemClickListener设置的listener一般在当点击某行内容是会被调用,但是如果这行内容中包含Button,ImgButton等控件时就不会被调用
(2)ListView.setOnItemLongClickListener设置的listener一般在当长按某一行时会被调用,而且在抬起之前就已经调用了。
(3)onItemLongClick的调用后是否还会调用onItemClick,这个要根据onItemLongClick的返回值来决定,下面做已详细解释:
lv.setOnItemClickListener(new OnItemLongClickListener() {
public boolean onItemClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println("ITEM LONG CLICKED >> POSITION : " + position);
return false;
}
});
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println("ITEM LONG CLICKED >> POSITION : " + position);
return false/true;
}
});
说明:看上面两段代码,如果onItemLongClick返回false那么onItemClick仍然会被调用。而且是先调用onItemLongClick,然后调用onItemClick,如果返回true那么onItemClick就不会再被调用了。
(4)onItemClick以及onItemLongClick对弹出菜单的影响:onItemClick不影响弹出菜单;onItemLongClick如果返回true那么菜单不能弹出,只有在onItemLongClick如果返回false的时候才会弹出菜单。
(5)让包含button的item也能弹出菜单,回调onItemClick以及onItemLongClick的监听器,需要设置Button属性:
android:focusable="false"
android:focusable="false"
android:longClickable="true"
android:longClickable="true"
(1)ListView.setOnItemClickListener设置的listener一般在当点击某行内容是会被调用,但是如果这行内容中包含Button,ImgButton等控件时就不会被调用
(2)ListView.setOnItemLongClickListener设置的listener一般在当长按某一行时会被调用,而且在抬起之前就已经调用了。
(3)onItemLongClick的调用后是否还会调用onItemClick,这个要根据onItemLongClick的返回值来决定,下面做已详细解释:
lv.setOnItemClickListener(new OnItemLongClickListener() {
public boolean onItemClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println("ITEM LONG CLICKED >> POSITION : " + position);
return false;
}
});
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println("ITEM LONG CLICKED >> POSITION : " + position);
return false/true;
}
});
说明:看上面两段代码,如果onItemLongClick返回false那么onItemClick仍然会被调用。而且是先调用onItemLongClick,然后调用onItemClick,如果返回true那么onItemClick就不会再被调用了。
(4)onItemClick以及onItemLongClick对弹出菜单的影响:onItemClick不影响弹出菜单;onItemLongClick如果返回true那么菜单不能弹出,只有在onItemLongClick如果返回false的时候才会弹出菜单。
(5)让包含button的item也能弹出菜单,回调onItemClick以及onItemLongClick的监听器,需要设置Button属性:
android:focusable="false"
android:focusable="false"
android:longClickable="true"
android:longClickable="true"
相关文章推荐
- 关于onItemClick和onItemLongClick同时执行的一般性解决方法
- (小知识点)项目中遇到onItemClick 和onItemLongClick同时执行的问题
- onItemClick和onItemLongClick同时触发解决方案
- 解决使用PullToRefreshListView找不到setOnItemLongClickListener方法的问题
- 解决OnItemClickListener 和 OnItemLongClickListener同时响应问题
- Android setOnItemLongClickListener setOnItemClickListener 同时触发解决
- SQL SERVER 2008 同时执行select 和 update出现死锁解决方法
- Android中自定义ListView无法响应OnItemClickListener中的onItemClick方法问题解决方案
- 关于TimePickerDialog中OnTimeSet()函数执行两次的解决方法
- 关于SearchView中onQueryTextSubmit方法执行两次的解决方法
- Listview的onItemClickListener无法响应的解决方法
- 有关ListView.setOnItemClickListener点击无效的解决方法
- Android ListView OnItemLongClick和OnItemClick事件内部细节分享以及几个比较特别的属性
- 关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法
- Android中解决ListView等视图setOnItemClickListener()方法失效的问题
- Listview的onItemClickListener无法响应的解决方法
- Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证
- 关于MySQL5.5不能执行带有中文字符的语句解决方法
- 关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法
- listview setOnItemClickListener 点击事件失效的解决方法