gridView的事件衝突

最近在做項目時,遇到一個要求, 長按gridView的Item,和點擊Item事件。

點擊長按onItemLongClickListener時,可刪除GridView的Item

點擊某個Item時執行OnItemClickListener事件。

2個同時存在時,會發現,點擊長按事件後,它會執行點擊某個Item事件。

 gridView.setOnItemClickListener(itemListener);
  gridView.setOnItemLongClickListener(itemLongListener);



解決的辦法是: 讓它返回true, [如果默認返回是false,是會執行OnItemClickListener事件的。]

      private OnItemLongClickListener itemLongListener = new OnItemLongClickListener() {


        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            showDeleteDialog(position);
            return true;
        }
    };


總結:

對於onLongClickLisener是有一個返回值標識。對於一次長按操作,如果返回false,則2個lisener都會相應,如果返回true則時間被longClick鏈式攔截,後面的【clickLisener處於後面的位置】的註冊的lisener將不再向上回調;在處理長按時,注意的細節是把onItemLongClick返回設置爲true,否則長按是會執行setOnItemClickListener事件的


這樣就解決了點擊時的衝突問題了,記錄下來方便自己和他人看吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章