1. 程式人生 > >GridView的點選事件衝突解決

GridView的點選事件衝突解決

      在開發的時候,經常可能遇到ListView或GridView原因是Item佈局中的button或ImageButton強制獲取了item的焦點,解決方式之一是:只要設定Item佈局中的button的focusable為false即可,另外可以在Item佈局的根節點新增屬性android:descendantFocusability="blocksDescendants"也可以解決。

    今天在開發一介面的時候遇到了點選事件衝突問題,並不是I控制元件本身與Item上的控制元件衝突,而是控制元件的本身與其header(比如ListView可以新增Header)中的事件衝突,用上面的方法就解決不了。先貼下介面情況,圖是隨便畫的,請勿噴!


如上圖,主要是頭部的GridView與本身控制元件PullToRefreshGridViewWithHeaderAndFooter及其它部分控制元件的事件衝突,頭部GridView的onItemClick()事件非常不靈敏,甚至無效,除非先點選其它部分,再點選GridView的item才有效。試了各種 方式都無效,後來就用了一個最原始的方法,就是把每一個Item的點選事件放在GridView的介面卡adapter中來處理,衝突問題就沒有了。

adapter中的主要程式碼 :

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.product_category_list_item, null);
holder.categoryRela=(RelativeLayout) convertView.findViewById(R.id.index_category_rela);//是在item的根結點設定的id
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.categoryRela.setOnClickListener(new OnClickListener() {//這裡設定的點選事件
@Override
public void onClick(View v) {
EventBus.getDefault().post(new CategoryItemEvent(pos));
}
});
return convertView;
}

相關推薦

GridView事件衝突解決

      在開發的時候,經常可能遇到ListView或GridView原因是Item佈局中的button或ImageButton強制獲取了item的焦點,解決方式之一是:只要設定Item佈局中的bu

SpannableString中的ClickableSpan和Textview事件衝突解決

背景描述:專案中有這樣的需求:在展示評論內容的Textview中展示文字,其中包含3種類型資料: 1、普通文字:評論內容或者回復內容。因為這個Textview是展示評論或者回復的,點選後,要展示軟鍵盤(popupwindow等忽略) 2、股票程式碼:該型別文

TableView cell的選中事件 與手勢事件 衝突解決辦法

三步曲 1、遵守UIGestureRecognizerDelegate協議 2、給手勢觸發動作新增代理  程式碼如下 UITapGestureRecognizer *hideTap = [[UITapGestureRecognizer alloc]initWithTarge

Tap手勢與UITableView事件衝突解決辦法

  在我們的開發過程中經常會遇到點選頁面回收鍵盤的需求,當然這個很好解決。   在我們的開發過程中也會遇到點選某一選項之後回收列表,這個也很容易實現。   那麼,問題來了,當這兩個碰到一起怎麼辦呢,你可以按照正常的程式碼去寫,但是,當你點選的時候你會發現,並沒有出現你預期要

Android Listview中Button按鈕事件衝突解決辦法

 今天做專案時,ListView中含有了Button元件,心裡一早就知道肯定會有衝突,因為以前就遇到過,並解決過,可惜當時沒有記錄下來。 今天在做的時候,繼續被這個問題鬱悶了一把,後來解決後,趕緊來記錄下,以便日後參考。   首先,其實Listview中Button按

listview或gridview中item的事件與控制元件事件衝突解決

listview中item的點選事件與控制元件點選事件衝突的解決: 遇到的問題:listview條目點選事件無法處理事件。listview裡的控制元件搶先收到了事件。 方式1:設定包含所有控制元件的父view的 descendantFocusability

ScrollView與viewpager滑動事件衝突,與事情衝突解決方案

在產品適配的時候我加了ScrollView,但是產品提出了一個向上輪播需求 首先把豎直向上的viewpager粘出來: package com.cfiigroup.zhehui.hepaidai.view; import android.view.MotionEvent; impo

ListView中Item與Item的子控制元件事件衝突問題解決

心靈包含人所有的一切有意識、無意識的思想、情感和行為。——《星夜心理書系》 1、問題 在Android開發時,ListView中點選一個Item,會一併觸發其子控制元件的點選事件。比如Item中的Button、ImageButton等。導致了點選

解決Listview的item和裡面控制元件事件衝突

兩種辦法1.設定裡面控制元件的focusable為false <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_p

UITapGestureRecognizer和UIButton的事件衝突解決辦法

問題描述:        檢視view上有一個UIButton例項btn,綁定了一個點選事件的響應方法buttonClicked:,由於某種需要(如點選空白區域收起鍵盤),為view添加了UITapGestureRecognizer手勢,關鍵程式碼如下: UITap

ListView的長按事件事件衝突解決辦法

    需求是這樣的:listView中點選item 跳轉到一個activity,長按item可以對這條item進行刪除操作,在刪除前會彈出dialog(確認刪除對話方塊)。     但是在開發過程中

解決回收鍵盤與cell事件衝突問題(思路新增手勢代理)

-(void)drawCollection{ //CollectionView self.flowLayout = [[UICollectionViewFlowLayoutalloc]init]; self.flowLayout.itemSize = CGSizeMake(

解決ListView中Item的子控制元件(比如Button)與Item事件衝突

經常會碰到在ListView中點選其中一個Item,會一併觸發其子控制元件的點選事件,例如Item中的Button、ImageButton等,導致了點選Item中Button以外區域也會觸發Button點選事件。在網上找了相關方法,這裡記錄下,親測可行.. 1、在Item

swiper輪播圖包在div(tab切換)下js上一頁下一頁事件失效解決辦法

問題:    兩種解決辦法: 解決辦法一: var mySwiper = new Swiper ('.swiper-container', { nextButton: '.swiper-button-next', p

vue中的長按事件事件衝突

ps:我是個新手,最近一直在做移動端的專案,先說下需求,點選圖片預覽,長按刪除,之前在圖片上幫定了點選事件和長按事件,但是會有衝突,由於智商不夠,百度半天才解決的,最後直接把點選事件給去了,直接用定時器械的,記錄下,下次直接用就好了   1,觸屏事件 touchstart: //手指放到

android listview裡包含元件(checkbox)事件和Item的事件衝突

在listview的item中包含有textview和checkBox。我們既想獲取listitem的點選事件,又想獲取listitem中textview的點選事件和listitem中checkBox的點選事件,那麼有沒有辦法實現呢?答案是肯定的,我們只需重新建立listview的介面卡繼承BaseAdpte

RecyclerView item內部事件、item事件衝突

1.recyclerview item內部控制元件沒有點選事件 在recyclerview item內部控制元件不存在點選事件的情況下。item設定點選事件可通過新增觸控事件 recyclerv

input失焦事件事件衝突處理

今天遇到一個問題輸入框輸入文字出現列表可以進行點選跳轉地址攜帶輸入值 點選空白區域清除輸入框 效果如圖 點選時間完成後新增失焦事件 點選不好用了 事件執行順序失焦高於點選 解決方案 給點選標籤加一個 mousedown 事件, 在其中執行 event.preventDe

表單提交與按鈕事件衝突

問題出現的原因:在提交表單的時候經常會需要判斷表單內的內容是否合法,這時候就需要處理提交按鈕點選事件與表單action屬性的關係, 問題體現:無論表單內的內容是否合法,都會跳轉到action繫結的地址。 解決辦法: 一:用form表單的onsubmit方法添進行呼叫,不

在Angular輸入框內按下回車會觸發其它button的事件解決方法

將不需要觸發事件的button上新增type="button"即可<button type="button" (click)="clickMe()">click</button>參考:https://stackoverflow.com/question