ListView 中使用onItemClick和onItemLongClick的常見問題


用過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使用時常見問題了,歡迎各位補充說明!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM