最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android XRecyclerView最簡單的item點擊事件處理

 更新時間:2022年08月28日 09:50:07   作者:騷劍客  
這篇文章主要為大家詳細介紹了Android XRecyclerView最簡單的item點擊事件處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下

以前一直都是用PullToRefresh,后來覺得還是太out了?,F(xiàn)在很多人都是用RecyclerView,很簡單的用法,布局多樣化,主要是有瀑布流。這才知道RecyclerView.LayoutManager真正的強大。

但是說要addHeaderView這個的話,RecyclerView沒有實現(xiàn),所以我用了XRecyclerView,其實它也是在RecyclerView的基礎上再次封裝的,用起來還是蠻好的。

這里說一下,正確的使用XRecyclerView點擊item做事件處理的問題。其實就是在RecyclerView.ViewHolder里面的item做點擊,那么設計到一個問題就是如何簡單使用了。

一般我們會直接在item布局中的最外層設置一個id=”@+id/…”,然后在onBindViewHolder中用holder.**.setOnClickListener()進行事件處理,你看看你是不是這樣做的,如果這樣做的話,那就繼續(xù)往下看,教你簡單的。

簡單使用item的點擊事件

1、先看下RecyclerView.ViewHolder源碼是怎么寫的

/**
 * A ViewHolder describes an item view and metadata about its place within the RecyclerView.
 *
 * <p>{@link Adapter} implementations should subclass ViewHolder and add fields for caching
 * potentially expensive {@link View#findViewById(int)} results.</p>
 *
 * <p>While {@link LayoutParams} belong to the {@link LayoutManager},
 * {@link ViewHolder ViewHolders} belong to the adapter. Adapters should feel free to use
 * their own custom ViewHolder implementations to store data that makes binding view contents
 * easier. Implementations should assume that individual item views will hold strong references
 * to <code>ViewHolder</code> objects and that <code>RecyclerView</code> instances may hold
 * strong references to extra off-screen item views for caching purposes</p>
 */
public static abstract class ViewHolder {
 public final View itemView;

 .......

 public ViewHolder(View itemView) {
  if (itemView == null) {
   throw new IllegalArgumentException("itemView may not be null");
  }
  this.itemView = itemView;
 }

 .......
}

2、再來看看我們繼承它做了什么事情

public class XRViewHolder extends RecyclerView.ViewHolder {
 public XRViewHolder(View view) {
  super(view);
  ButterKnife.bind(this, view);
 }
 .......
 public void onBindViewHolder(VH holder, final int position) {
  if (position >= 0) {
   holder.itemView.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
     itemClick(getItem(position), position);
    }
   });
  }
 }
}

看到我們自定義的XRViewHolder的構造方法中也用到了super(view)。

其實這里的view就是item的布局,這樣的話,我們要實現(xiàn)點擊事件就很容易了,可以直接在用holder.itemView.setOnClickListener

item的點擊錯位問題

用XRecyclerView.getChildAt(position).setOnClickListener()出現(xiàn)錯位問題,如果你在addHeaderView就會出現(xiàn)這種錯位的問題會更加明顯,可以先來看看XRecyclerView里面的部分源碼。

public class XRecyclerView extends RecyclerView {

 private WrapAdapter mWrapAdapter;
 ......

 public void addHeaderView(View view) {
 sHeaderTypes.add(HEADER_INIT_INDEX + mHeaderViews.size());
 mHeaderViews.add(view);
 if (mWrapAdapter != null) {
  mWrapAdapter.notifyDataSetChanged();
 }
 }

 ......
 private class WrapAdapter extends RecyclerView.Adapter<ViewHolder> {

 @Override
 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  if (viewType == TYPE_REFRESH_HEADER) {
   return new SimpleViewHolder(mRefreshHeader);
  } else if (isHeaderType(viewType)) {
   return new SimpleViewHolder(getHeaderViewByType(viewType));
  } else if (viewType == TYPE_FOOTER) {
   return new SimpleViewHolder(mFootView);
  }
  return adapter.onCreateViewHolder(parent, viewType);
 }
}

當我們每次addHeaderView時他都會進行notifyDataSetChanged,而且在onCreateViewHolder也有了對應的isHeaderType判斷,所以當你想選擇第一個item做事件處理時可能就pos=0是屬于headerview。

總結

item點擊事件簡單方便快捷的方式:holder.itemView.setOnClickListener()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android仿美團下拉菜單(商品選購)實例代碼

    Android仿美團下拉菜單(商品選購)實例代碼

    這篇文章主要介紹了Android仿美團下拉菜單(商品選購)實例代碼的相關資料,需要的朋友可以參考下
    2016-03-03
  • Android RecyclerView實現(xiàn)點擊條目刪除

    Android RecyclerView實現(xiàn)點擊條目刪除

    這篇文章主要為大家詳細介紹了Android RecyclerView實現(xiàn)點擊條目刪除,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Android 應用的安裝過程詳解

    Android 應用的安裝過程詳解

    這篇文章主要介紹了Android 應用的安裝過程詳解的相關資料,對應Android應用的安裝,我想大家應該了解下的,需要的朋友可以參考下
    2016-11-11
  • 深入理解Android中的建造者模式

    深入理解Android中的建造者模式

    建造者模式將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創(chuàng)建不同的表示。所以這篇文章主要介紹了Android中的建造者模式,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 基于android實現(xiàn)五子棋開發(fā)

    基于android實現(xiàn)五子棋開發(fā)

    這篇文章主要為大家詳細介紹了基于android實現(xiàn)五子棋開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Android ViewPager實現(xiàn)Banner循環(huán)播放

    Android ViewPager實現(xiàn)Banner循環(huán)播放

    這篇文章主要為大家詳細介紹了Android ViewPager實現(xiàn)Banner循環(huán)播放,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android開發(fā)之自定義CheckBox

    Android開發(fā)之自定義CheckBox

    本文通過實例代碼演示如何在Android中如何自定義CheckBox,實現(xiàn)的效果很好,有需要的可以參考借鑒。
    2016-08-08
  • Kotlin基礎學習之lambda中return語句詳解

    Kotlin基礎學習之lambda中return語句詳解

    這篇文章主要給大家介紹了關于Kotlin基礎學習之lambda中return語句的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或使用Kotlin具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • Android定時器Timer的停止和重啟實現(xiàn)代碼

    Android定時器Timer的停止和重啟實現(xiàn)代碼

    本篇文章主要介紹了Android實現(xiàn)定時器Timer的停止和重啟實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android Studio 3.6 正式版終于發(fā)布了,快來圍觀

    Android Studio 3.6 正式版終于發(fā)布了,快來圍觀

    Android Studio 3.6 正式版終于發(fā)布了,值得興奮呀,畢竟 3.5 大版本更新也已經差不多半年了,撒花撒花!這次更新又更新了什么呢?快來跟隨小編一起看看吧
    2020-02-02

最新評論

南宫市| 文安县| 深圳市| 屯昌县| 建平县| 黑山县| 武冈市| 萨嘎县| 凌海市| 东辽县| 久治县| 西乌珠穆沁旗| 化德县| 尉氏县| 东源县| 西昌市| 道孚县| 磴口县| 九龙城区| 青浦区| 鄯善县| 永年县| 攀枝花市| 吉隆县| 淮滨县| 肥西县| 文成县| 长兴县| 若尔盖县| 南京市| 平武县| 秦皇岛市| 千阳县| 庄河市| 商南县| 河间市| 阳朔县| 渭南市| 奇台县| 东光县| 东乌|