1. 程式人生 > >【菜鳥之路】RecyclerView新增Item點選事件

【菜鳥之路】RecyclerView新增Item點選事件

  今天下午繼續在專案中學著做RecyclerView,想給每個Item新增一個點選跳轉,翻了翻買的兩本書發現沒有呃,只能百度+看看網上前輩們的程式碼了。
  翻了一些比較不錯的文章,瞭解到大概的幾種實現方法:
  1.通過RecyclerView中預留的addOnItemTouchListener()方法
  2.在Adapter建立ItemView時新增事件監聽
  3.當ItemView attach RecyclerView時實現
  (出處http://blog.devwiki.net/index.php/2016/07/24/three-ways-click-recyclerview-item.html?utm_source=tuicool&utm_medium=referral

)
 
  第1,3種實現在單獨的類中,可以使程式碼更簡潔。第2種方法更簡單實現,我先試了一下該方法,用在了最近的專案裡面(專案地址:http://github.com/LAILAIWA/Slinky2
 
這裡我寫在了我的Fragment的initData()裡面,設定介面卡的後面

//新增監聽回撥
        mAdapter.setClickListener(new GeneralAdapter.ItemClickListener(){
            @Override
            public void OnItemClick(View view, int
position) { Log.e("-----Item clicked-----",String.valueOf(position)); Toast.makeText(getActivity(), "Item " + position + " clicked:", Toast.LENGTH_SHORT).show(); //跳轉動作 } });

更改了之前寫的adapter

public class GeneralAdapter extends RecyclerView.Adapter<GeneralAdapter.MyViewHolder> {

    private
List<team> mDatas; private LayoutInflater mInflater; private ItemClickListener ClickListener; public GeneralAdapter(Context context, List<team> mDatas) { this.mDatas = mDatas; mInflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(mInflater.inflate( R.layout.item_common_adapter, parent, false)); return holder; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //為holde設定指定資料,將資料繫結到每一個childView中 team tdata = mDatas.get(position); holder.tvTeamTitle.setText(tdata.title); holder.tvTeamInfo.setText(tdata.charge1); holder.tvTeamType.setText(tdata.type); //建立view時新增監聽事件 if(ClickListener != null){ holder.tvTeamTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); } }); holder.tvTeamInfo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); } }); holder.tvTeamType.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); } }); } } public GeneralAdapter setClickListener(ItemClickListener ClickListener){ this.ClickListener = ClickListener; return this; } @Override public int getItemCount() { return mDatas.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView tvTeamTitle; TextView tvTeamInfo; TextView tvTeamType; public MyViewHolder(View view) { super(view); tvTeamTitle = (TextView) view.findViewById(R.id.text_team_title); tvTeamInfo = (TextView) view.findViewById(R.id.text_team_info); tvTeamType = (TextView) view.findViewById(R.id.text_team_type); } } public interface ItemClickListener{ //宣告介面ItemClickListener void OnItemClick(View view,int position); // void OnTitleClick(View view,int position); // void OnInfoClick(View view,int position); // void OnTypeClick(View view,int position); } }

相關推薦

RecyclerView新增Item事件

  今天下午繼續在專案中學著做RecyclerView,想給每個Item新增一個點選跳轉,翻了翻買的兩本書發現沒有呃,只能百度+看看網上前輩們的程式碼了。   翻了一些比較不錯的文章,瞭解到大概的幾種實現方法:   1.通過RecyclerView中

Android RecyclerView (三)初學,為RecyclerView新增Item監聽。

前兩篇文章講述瞭如何基本的使用RecyclerView呈現出自己想要的效果,但是我好奇的是,為什麼RecyclerView沒有.SetOnClick之類的方法呢,RecyclerView不得不承認,它是一款很強大的軟體,僅僅幾行程式碼就可以切換出自己想要的佈局,

RecyclerView條目item事件---放大

Adapter–建立介面 //建立介面 public interface RecyInterface{ void vh(Viewholder viewholder); } //宣告介面名 private RecyInterface mRec

RecyclerViewItem事件,增加刪除Item瀑布流動畫效果,長按拖動ItemRecyclerView複雜佈局、實現新聞頻道選擇器

RecyclerView的Item點選事件的實現,增加和刪除Item使用瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局的實現使用、RecyclerView去實現今日頭條新聞頻道選擇器。 使用ItemTouchHelper實現Item的拖動交換,由於Recy

RecyclerView實現Item事件方法三/四

此係列文章隔上次釋出有一段時間,原因就是懶(其實是比較忙),今天來說下剩下的兩種方法,如何優雅的實現 對於方法三我這裡就不說了,因為有很多文章都有說明,那就是基於RecyclerView.On

RecyclerView實現Item事件方法二

《RecyclerView實現Item點選事件方法一》上篇文章中我們通過一種方式實現了條目的點選事件,今天我們用另外一種方式來實現RecyclerView的條目點選事件來彌補方法一中所提到的缺陷 利用Adapter來實現 adapter code

詳解Android中回撥機制與RecyclerViewItem事件實現

總是看書上寫著回調回調,以為就是函式呼叫換了個名字,尤其是看了Button的點選事件實現後,覺得不就是觸發機制。 A事件發生->後臺處理邏輯->告訴前臺怎麼做->結束。 Android常見button點選事件: loginB

RecyclerViewItem事件實現總結

自從開始使用RecyclerView代替ListView,會發現有很多地方需要學習。前一段時間的學習記錄有: 實現 RecyclerView的Item的點選事件有三種方式: 在建立 ItemView時新增點選監聽 當 ItemView attach Recycle

實現RecyclerViewitem事件的內部監聽器

程式碼如下: public class myViewholder extends RecyclerView.ViewHolder implements View.OnClickListener{ private TextView tv_bookname;

RecyclerViewitem事件

自從Google推出RecyclerView後,它就成為"寵兒",自定義外掛式的元件用起來很爽。但是很遺憾的是,Google並沒有給我們提供item的點選事件函式,但是我們可以類似ListView的item點選事件來構造出我們自己的RecyclerView item的點選事件

計算導論與C基礎練習2:計算概論第六週 B-05作業

2016年1月6日 在做題前先感謝各位大神的解法以及思路 程式設計題#1:數字求和 描述 給定一個正整數a,以及另外的5個正整數,問題是:這5個整數中,小於a的整數的和是多少? 輸入 輸入一行,只包括6個小於100的正整數,其中第一個正整數就是a。 輸出 輸出一行,給出一個

mysql 修煉如何從成為mysql 大神?

首先MySQL大多是跑在Linux環境上的,所以我們需要學習一下Linux的知識,最基礎的需要了解: ■ Linux的安裝及目錄結構意義 ■ 常用的Linux命令,大概20多個 ■ 網路基本知識,

Kaggle-MNISTCNN再新增一個層卷積(八)

簡述 基於之前的框架 【Kaggle-MNIST之路】自定義程式結構(七) 得分:0.9914 排名:900+ 程式碼 CNN.py 檔案內容 import torch.nn as nn import torch class

架構師集群/分布式環境下5種session處理策略

復制 協調 部分 ont 描述 分析 bsp 優化 vol 轉自:http://www.cnblogs.com/jhli/p/6557929.html 在搭建完集群環境後,不得不考慮的一個問題就是用戶訪問產生的session如何處理。如果不做任何處理的話,用戶將出現頻繁

Vue實戰一、Vue-cli全面詳解及進階操作。

image 腳本 js基礎 這一 命令執行 bsp row 編譯 服務器 全面的Vue-cli學習,這一篇就夠了! 一、下載 使用vue-cli前,需先安裝node.js,node的安裝就不贅述,不過在此需要註意: 1. node版本需在4.x以上,首推6.x以上版本

C#學習001.基本操作

arp main cti 字符 thread 程序 AI 報錯 float 001【HelloWorld】分析代碼塊 //這裏是註釋 下面是引入命名空間 using System; using System.Collections.Generic; using Syst

——Python學習串口通信(與STC89C51)源碼及打包發布試水

方式 lin enc error: pri 打開端口 端口號 兩個 關閉 想做上位機控制系統,就拿51來試試水。 Python環境:Win10+Python 3.6.4(64位)+serial,pyserial 一、上位機程序的編寫 import serial ser =

——機器學習HierarchicalClustering層次分析及個人理解

features clu 機器 層次 節點類 均值 成了 range n) 這個算法。我個人感覺有點雞肋。最終的表達也不是特別清楚。 原理很簡單,從所有的樣本中選取Euclidean distance最近的兩個樣本,歸為一類,取其平均值組成一個新樣本,總樣本數少1;不斷的重

cisco探索

接口 子接口 font ctrl+z 探索 nat轉發 work 命令 psu 查看和維護(show&debug) show show version:顯示版本信息show running-config:顯示當前的配置show interfaces :顯示接口的

itext學習-------(第五篇)對pdf進行蓋章/簽章/數字簽名

在上一篇文章中,我們學習了使用itext對pdf增加圖片水印和文字水印,那麼這篇文章我們將要學習更高階一點的水印—-印章。可能你會有疑問,印章不也是一個圖片嗎?當然,你可以把一個印章圖片來做成圖片水印,但是我們這裡要介紹的是,通過數字簽名的方式來進行pdf簽章。