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

使用RecyclerView實現(xiàn)Item點擊事件

 更新時間:2024年08月13日 08:48:23   作者:曲幽  
這篇文章主要介紹了使用RecyclerView實現(xiàn)Item點擊事件,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

概述

RecyclerView本身沒有實現(xiàn)點擊事件,需要自定義接口進行實現(xiàn)

接口定義

onRecyclerViewItemClickListener

接口名稱隨自己喜歡起,放置的位置也隨你喜歡,因為是 public 放哪都能調(diào)用到

方法參數(shù)上這里考慮可能會對布局進行調(diào)整,傳入了父控件和當(dāng)前item以及索引位置

public interface onRecyclerViewItemClickListener{
    void onItemClick(RecyclerView parent, View view, int position);
    void onItemLongClick(RecyclerView parent, View view, int position);
}

如果想要一個接口管理一個監(jiān)聽事件回調(diào),也可以單獨弄一個定義接口文件,更規(guī)范些

事件參數(shù)也可以根據(jù)需要進行調(diào)整,如果沒有特別需要,只要拿到item索引位置即可

public interface IAdapter {
	/*
	* Item 單擊事件后續(xù)處理
	*/
    interface OnRVItemClickListener {
        void onClick(int position);
    }

	/*
	* Item 長按事件后續(xù)處理
	*/
    interface OnRVItemLongClickListener {
        boolean onLongClick(int position);
    }

	/*
	* Item 移除事件后續(xù)處理
	*/
    interface OnRVItemRemoveListener{
        void onRemove(int position);
    }
}

以上如果看不明白,那接口這個概念就需要再翻看一下了

Adapter

接下來就要改造這個Adapter了

初始化接口事件

	//初使化自定義的接口,接口定義在哪個包下就會把哪個包名也引入進來,只是名字長點,不影響使用
    private pub.onRecyclerViewItemClickListener onRecyclerViewItemClickListener;
    //為了方便接口函數(shù)傳值,這里把RecyclerView控件拉出來,如果接口方法參數(shù)列表里沒有,可以不用寫
    private RecyclerView rvParent;

綁定接口回調(diào)事件

	//定義一個公用方法,可以在Activity中來綁定接口事件
    public void setOnItemClickListener(pub.onRecyclerViewItemClickListener onRecyclerViewItemClickListener) {
        this.onRecyclerViewItemClickListener = onRecyclerViewItemClickListener;
    }

綁定控件監(jiān)聽

這里有兩種實現(xiàn)方式

直接給控件綁定監(jiān)聽事件

代碼中的寫法可以不作參考,具體看你想要給某個控件進行綁定監(jiān)聽還是給整個item綁定監(jiān)聽,和正常控件綁定沒啥判別

只是具體的事件內(nèi)容改為調(diào)用監(jiān)聽接口事件的方法即可

別忘了把參數(shù)傳進去給外部調(diào)用時使用

 @Override
 public void onBindViewHolder(@NonNull viewHolder holder, int position) {
     holder.bind(lstCharges.get(position));
     holder.mView.getRoot().setOnClickListener(view -> itemClickListener.onClick(position));
     holder.mView.getRoot().setOnLongClickListener(view -> itemLongClickListener.onLongClick(position));  
 }

比較推薦這種寫法,至于為什么:簡單!

繼承 View.OnClickListener

另一個就是在你的類名之后 implements 一個 View.OnClickListener 然后重寫 onClick 方法

public class FileAdapter extends RecyclerView.Adapter<FileAdapter.myViewHolder> implements View.OnClickListener {

此時會報錯提示要重載 onClick事件

使用這種方法,在此獲取不到當(dāng)前的索引位置,

可以定義一個 int 公用變量來存儲更新,

也可以如上面把 RecyclerView 拉出來,通過當(dāng)前view來查找索引位置

具體看自己喜好,這里只作一個演示

	//重載點擊事件,指定點擊事件時執(zhí)行自定義的onItemClick
    @Override
    public void onClick(View view) {
    	//此時就用到上面拉出來的那個 rvParent 了
        int position = rvParent.getChildAdapterPosition(view);
        if (onRecyclerViewItemClickListener != null)
            onRecyclerViewItemClickListener.onItemClick(rvParent, view, position);
    }

只是設(shè)定監(jiān)聽事件了,但沒有指定監(jiān)聽事件給誰,那點擊之后是不會有反應(yīng)的,還需要在 onCreateViewHolder 中綁定監(jiān)聽事件

    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    	//指定一個父控件,把 RecyclerView 拉出來供 onClick 事件使用
        rvParent = (RecyclerView) parent;
        View view = LayoutInflater.from(mContext).inflate(R.layout.file_manager_item, parent, false);
        //綁定監(jiān)聽點擊事件,因為類本身 implement 了 View.OnClickListener 此時只要監(jiān)聽綁定到 this 就可以了
        view.setOnClickListener(this);
        return new myViewHolder(view, mContext);
    }

完整代碼

下面給出了完整的代碼,中間無關(guān)的信息省略了

public class FileAdapter extends RecyclerView.Adapter<FileAdapter.myViewHolder> implements View.OnClickListener {
	...
    private pub.onRecyclerViewItemClickListener onRecyclerViewItemClickListener;
    private RecyclerView rvParent;

    ...
    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    	//指定一個父控件
        rvParent = (RecyclerView) parent;
        View view = LayoutInflater.from(mContext).inflate(R.layout.file_manager_item, parent, false);
        //綁定監(jiān)聽點擊事件
        view.setOnClickListener(this);
        return new myViewHolder(view, mContext);
    }

    ...
	//重載點擊事件,指定點擊事件時執(zhí)行自定義的onItemClick
    @Override
    public void onClick(View view) {
        int position = rvParent.getChildAdapterPosition(view);
        if (onRecyclerViewItemClickListener != null)
            onRecyclerViewItemClickListener.onItemClick(rvParent, view, position);
    }

	...
	//實例化自定義接口
    public void setOnItemClickListener(pub.onRecyclerViewItemClickListener onRecyclerViewItemClickListener) {
        this.onRecyclerViewItemClickListener = onRecyclerViewItemClickListener;
    }
}

Activity

接下來和正常ListView綁定監(jiān)聽事件的操作差不多

fileAdapter.setOnItemClickListener(new pub.onRecyclerViewItemClickListener() {
        @Override
        public void onItemClick(RecyclerView parent, View view, int position) {
        	//自定義點擊后的功能事件 ...
        	/* 此處代碼僅供參考,演示怎樣調(diào)用當(dāng)前item的信息
            mView.tvFmPath.setText(lstFiles.get(position).getFilePath());
            getPath(lstFiles.get(position).getFilePath());
            fileAdapter.notifyDataSetChanged();
            */
        }

        @Override
        public void onItemLongClick(RecyclerView parent, View view, int position) {
			//自定義長按后的功能事件 ...
        }
    });

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android SDK Manager國內(nèi)無法更新的解決方案

    Android SDK Manager國內(nèi)無法更新的解決方案

    本文主要介紹Android SDK Manager國內(nèi)無法更新的解決方案,這里提供了解決方法,及簡單說明實現(xiàn)流程,有興趣的小伙伴可以參考下
    2016-09-09
  • Android實現(xiàn)Gesture手勢識別用法分析

    Android實現(xiàn)Gesture手勢識別用法分析

    這篇文章主要介紹了Android實現(xiàn)Gesture手勢識別用法,結(jié)合實例形式較為詳細的分析了Android基于Gesture實現(xiàn)手勢識別的原理與具體實現(xiàn)技巧,需要的朋友可以參考下
    2016-09-09
  • Android自定義View仿騰訊TIM下拉刷新View

    Android自定義View仿騰訊TIM下拉刷新View

    這篇文章主要給大家介紹了關(guān)于Android自定義View仿騰訊TIM下拉刷新View的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Android 自動化測試經(jīng)驗分享 深入UiScrollable

    Android 自動化測試經(jīng)驗分享 深入UiScrollable

    UiScrollable是一個UiCollection(這東西還沒搞懂),我們可以使用它,在可滑動的頁面(水平滑動或上下滑動都可以)上查找我們想要的控件(item)
    2013-05-05
  • Android Bitmap壓縮方法的選擇詳解

    Android Bitmap壓縮方法的選擇詳解

    這篇文章主要介紹了Android Bitmap壓縮方法的選擇的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Android實現(xiàn)自定義倒計時

    Android實現(xiàn)自定義倒計時

    這篇文章主要為大家詳細介紹了Android實現(xiàn)自定義倒計時,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android中把bitmap存成BMP格式圖片的方法

    Android中把bitmap存成BMP格式圖片的方法

    這篇文章主要介紹了Android中把bitmap存成BMP格式圖片的方法,需要的朋友可以參考下
    2016-01-01
  • 實例講解Android中的AutoCompleteTextView自動補全組件

    實例講解Android中的AutoCompleteTextView自動補全組件

    AutoCompleteTextView組件被用在輸入框中能實現(xiàn)輸入內(nèi)容自動補全的功能,類似于大家平時用Google時的輸入聯(lián)想,這里我們來用實例講解Android中的AutoCompleteTextView自動補全組件,特別是實現(xiàn)郵箱地址補全的例子,非常實用
    2016-05-05
  • Android中Permission權(quán)限機制的具體使用

    Android中Permission權(quán)限機制的具體使用

    這篇文章主要介紹了Android中Permission權(quán)限機制的具體使用,本文講解了權(quán)限級別 protection level、ICC(inter-component communication)權(quán)限保護等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Android仿微信和QQ多圖合并框架(類似群頭像)的實現(xiàn)方法

    Android仿微信和QQ多圖合并框架(類似群頭像)的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Android仿微信和QQ多圖合并框架的相關(guān)資料,其實就是我們平時所見的群聊頭像,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12

最新評論

长乐市| 元江| 平昌县| 浦县| 大城县| 邻水| 通化市| 普定县| 诏安县| 贡嘎县| 西林县| 鹿泉市| 潍坊市| 甘德县| 黑河市| 济宁市| 葵青区| 沈丘县| 石屏县| 彰化县| 原阳县| 微博| 兴山县| 东方市| 福海县| 七台河市| 什邡市| 当雄县| 个旧市| 平安县| 乌鲁木齐市| 云林县| 朝阳县| 铁岭市| 金秀| 新疆| 奈曼旗| 朝阳区| 高台县| 崇信县| 贡觉县|