【菜鳥之路】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
RecyclerView的Item點選事件,增加刪除Item瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局、實現新聞頻道選擇器
RecyclerView的Item點選事件的實現,增加和刪除Item使用瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局的實現使用、RecyclerView去實現今日頭條新聞頻道選擇器。 使用ItemTouchHelper實現Item的拖動交換,由於Recy
RecyclerView實現Item點選事件方法三/四
此係列文章隔上次釋出有一段時間,原因就是懶(其實是比較忙),今天來說下剩下的兩種方法,如何優雅的實現 對於方法三我這裡就不說了,因為有很多文章都有說明,那就是基於RecyclerView.On
RecyclerView實現Item點選事件方法二
《RecyclerView實現Item點選事件方法一》上篇文章中我們通過一種方式實現了條目的點選事件,今天我們用另外一種方式來實現RecyclerView的條目點選事件來彌補方法一中所提到的缺陷 利用Adapter來實現 adapter code
詳解Android中回撥機制與RecyclerView的Item點選事件實現
總是看書上寫著回調回調,以為就是函式呼叫換了個名字,尤其是看了Button的點選事件實現後,覺得不就是觸發機制。 A事件發生->後臺處理邏輯->告訴前臺怎麼做->結束。 Android常見button點選事件: loginB
RecyclerView的Item點選事件實現總結
自從開始使用RecyclerView代替ListView,會發現有很多地方需要學習。前一段時間的學習記錄有: 實現 RecyclerView的Item的點選事件有三種方式: 在建立 ItemView時新增點選監聽 當 ItemView attach Recycle
實現RecyclerView的item點選事件的內部監聽器
程式碼如下: public class myViewholder extends RecyclerView.ViewHolder implements View.OnClickListener{ private TextView tv_bookname;
RecyclerView中item點選事件
自從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-MNIST之路】CNN再新增一個層卷積(八)
簡述 基於之前的框架 【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簽章。