用過Listview 的朋友,可能會遇到這樣的問題,當Listview的某一行有button存在時,無法彈出contextMenu;或者onItemClick 和onItemLongClick
同時執行的等問題。下面就一些常見問題疏理一下。
1.ListView
本身可不可以調用setOnClickListner()代碼上可以,但是運行馬上會丟出異常,所以是不可以攔截Listview本身的click事件。
2.ListView.setOnItemClickListener
設置的listener什么時候會被調用?
當點擊某行內容是會被調用,但是如果這行內容中包含Button,ImgButton等控件時就不會被調用,為什么以及怎么解決見后面。
3.ListView.setOnItemLongClickListener設置的listener什么時候被調用?
當長按某一行時會被調用,而且在抬起之前就已經調用了。
4.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;
}
});
如果返回false那么onItemClick仍然會被調用。而且是先調用onItemLongClick,然后調用onItemClick。
如果返回true那么click就會被吃掉,onItemClick就不會再被調用了。
5.監聽onItemClick以及onItemLongClick影響彈出菜單嗎? nItemClick不影響;onItemLongClick如果返回true那么就會吃掉click事件,導致菜單不能彈。
6.如何讓包含button的item也能彈出菜單,回調onItemClick以及onItemLongClick的監聽器呢?
需要設置Button屬性:
android:focusable="false"
android:focusable="false"
android:longClickable="true"
android:longClickable="true"
否則無法收到onItemLongClick 以上基本上就是Listview使用時常見問題了,歡迎各位補充說明!