10.RecyclerView中的item點選事件,如何實現
recyclerview的使用方法和listview大同小異,但是使用的adapter確實非常不一樣:
1.需要在adapter宣告onclickListener()介面,
2.然後建立介面物件,
3.然後實現介面方法,
4.之後在adapte中的vieholder中繫結例項化的控制元件(這個一定要寫,因為你要點選那個控制元件,實現跳轉就需要設定這個控制元件的點選事件)
5.最後在建立receclorView和adapter物件的類中,實現自定義的onclickListener()方法,方法裡面就隨便寫了
程式碼:adapter
package zuo.com.ui.adapter; importandroid.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.squareup.picasso.Picasso; import java.util.ArrayList;import java.util.List; import zuo.com.ui.R; import zuo.com.ui.bean.HomeCagetoryBean; import zuo.com.ui.bean.RecyclorBean; import zuo.com.ui.bean.RecyclorItemBean; /** * Created by Administrator on 2016/10/8. */ public class HomeCategoryAdapter extends RecyclerView.Adapter<HomeCategoryAdapter.ViewHolder> { private static intVIEW_TYPE_L=0; private static int VIEW_TYPE_R=1; private List<RecyclorBean> list; private LayoutInflater layoutInflater; public OnItemClickListener listener; //建立item監聽器物件 private View view; private Context mcontext; public void setOnItemClickListener(OnItemClickListener listener){ //建立建構函式 this.listener=listener; } public HomeCategoryAdapter(List<RecyclorBean> list,Context context){ this.list=list; this.mcontext=context; } //繫結item佈局檔案,然後在內部類ViewHolder中繫結item佈局檔案中的子控制元件 @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { layoutInflater=LayoutInflater.from(parent.getContext()); if(viewType==VIEW_TYPE_L) { view = layoutInflater.inflate(R.layout.template_home_cardview, parent, false); return new ViewHolder(view); }else{ view = layoutInflater.inflate(R.layout.template_home_cardview2, parent, false); return new ViewHolder(view); } } //繫結資料,即繫結子空間中的資料 @Override public void onBindViewHolder(ViewHolder holder, int position) { RecyclorBean recyclorBean=list.get(position); holder.textTitle.setText(recyclorBean.getTitle()); // holder.imageViewBig.setImageResource(homeCagetoryBean.getImgBig()); // holder.imageViewSmallTop.setImageResource(homeCagetoryBean.getImgSmallTop()); // holder.imageViewSmallBottom.setImageResource(homeCagetoryBean.getImgSmallButton()); Log.d("有問題",recyclorBean.getCpOne().getId()+""); //在adapter中運用快取機制,設定圖片 Picasso.with(mcontext).load(recyclorBean.getCpOne().getImgUrl().toString()).into(holder.imageViewBig); Picasso.with(mcontext).load(recyclorBean.getCpTwo().getImgUrl().toString()).into(holder.imageViewSmallTop); Picasso.with(mcontext).load(recyclorBean.getCpThree().getImgUrl().toString()).into(holder.imageViewSmallBottom); } //編寫方法針對cardview,偶數用cardview的佈局一,奇數用佈局二 @Override public int getItemViewType(int position) { if(position % 2==0){ return VIEW_TYPE_R; } else return VIEW_TYPE_L; } //返回資料的大小 @Override public int getItemCount() { return list.size(); } // 繫結item佈局檔案中的子控制元件 class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView textTitle; ImageView imageViewBig; ImageView imageViewSmallTop; ImageView imageViewSmallBottom; public ViewHolder(View itemView) { super(itemView); textTitle = (TextView) itemView.findViewById(R.id.text_title); imageViewBig = (ImageView) itemView.findViewById(R.id.imgview_big); imageViewSmallTop = (ImageView) itemView.findViewById(R.id.imgview_small_top); imageViewSmallBottom = (ImageView) itemView.findViewById(R.id.imgview_small_bottom); //在viewholder中繫結上面控制元件物件的點選事件,這裡的實現方法實際上就和button的點選事件一樣 imageViewBig.setOnClickListener(this); imageViewSmallTop.setOnClickListener(this); imageViewSmallBottom.setOnClickListener(this); } @Override public void onClick(View v) { RecyclorBean recyclorBean=list.get(getLayoutPosition()); //實現繫結控制元件的時候,獲取點選控制元件的物件,到底是什麼物件 if(listener!=null){ switch (v.getId()){ case R.id.imgview_big: //呼叫重寫的onclicklistener()實現繫結 listener.onClick(v,recyclorBean.getCpOne()); break; case R.id.imgview_small_top: listener.onClick(v,recyclorBean.getCpTwo()); break; case R.id.imgview_small_bottom: listener.onClick(v,recyclorBean.getCpThree()); break; default: break; } } } } //建立recyclorview的監聽事件 public interface OnItemClickListener{ void onClick(View v,RecyclorItemBean recyclorItemBean); } }
******************************************
******************************************
******************************************
這個地方就是zaiadapter中實現對控制元件的監聽事件的繫結(可以是recyclerview的item,或者adapter繫結的子佈局中的控制元件)
程式碼:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { SimpleDraweeView draweeView; TextView textTitle; TextView textPrice; Button button; public ViewHolder(View itemView) { super(itemView); draweeView = (SimpleDraweeView) itemView.findViewById(R.id.drawee_view); textTitle= (TextView) itemView.findViewById(R.id.text_title); textPrice= (TextView) itemView.findViewById(R.id.text_price); button= (Button) itemView.findViewById(R.id.hot_button); // draweeView.setOnClickListener(this); itemView.setOnClickListener(this); } @Override public void onClick(View v) { listener.onClick(v,getAdapterPosition()); } } //建立recyclorview的監聽事件 public interface OnItemClickListener{ void onClick(View v,int position); } }
Activity中的程式碼:
private void initRecyclerView(View view) { recyclerView= (RecyclerView) view.findViewById(R.id.recycler_view); homeCategoryAdapter=new HomeCategoryAdapter(list,getContext()); //載入adapter recyclerView.setAdapter(homeCategoryAdapter); //必須寫才能出現recyclorView,也可以是GirdLayoutManager,只是顯示item的圖形不一樣 recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); //設定分割線 recyclerView.addItemDecoration(new HomeItemDecoration()); //已經綁定了onclicklitener之後,只需要點選就能實現相應的效果 homeCategoryAdapter.setOnItemClickListener(new HomeCategoryAdapter.OnItemClickListener() { @Override public void onClick(View v, RecyclorItemBean recyclorItemBean) { Toast.makeText(getContext(),recyclorItemBean.getTitle(),Toast.LENGTH_SHORT).show(); } }); }
相關推薦
RecyclerView的Item點選事件,增加刪除Item瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局、實現新聞頻道選擇器
RecyclerView的Item點選事件的實現,增加和刪除Item使用瀑布流動畫效果,長按拖動Item,RecyclerView複雜佈局的實現使用、RecyclerView去實現今日頭條新聞頻道選擇器。 使用ItemTouchHelper實現Item的拖動交換,由於Recy
關於ListView中Item點選事件,動態改變Item中控制元件屬性
ListView中的Item事件點選不了,怎麼辦? 由於要設定ListView的Item點選事件來改變控制元件屬性,設定的時候發現Item無法點選,原因之一是給Item中的控制元件添加了屬性android:clickable=”true”使Item不響應點選事
RecyclerView中item點選事件
自從Google推出RecyclerView後,它就成為"寵兒",自定義外掛式的元件用起來很爽。但是很遺憾的是,Google並沒有給我們提供item的點選事件函式,但是我們可以類似ListView的item點選事件來構造出我們自己的RecyclerView item的點選事件
RecyclerView載入不同item並實現其item點選事件,實現新增常用應用的功能
先上效果圖吧 點選加號 勾選需要的應用點選新增 這裡出現了三種item的樣式,一種是加號,一種是應用圖示加文字,最後一種是應用圖示加文字還有個checkBox 這裡RecyclerView是配合CardView使用的。 在AS中使用RecyclerView需要先在buil
10.RecyclerView中的item點選事件,如何實現
recyclerview的使用方法和listview大同小異,但是使用的adapter確實非常不一樣: 1.需要在adapter宣告onclickListener()介面, 2.然後建立介面物件, 3.然後實現介面方法, 4.之後在adapte中的vieholder中繫結例
Android中Recyclerview使用7----條目中按鈕點選事件,在activity中呼叫(介面回撥)
0引入Recyclerview的支援庫 compile 'com.android.support:recyclerview-v7:23.4.0' 1效果圖: 2程式碼: 2.1MainActivity中: <span style="font-size:18p
詳解Android中回撥機制與RecyclerView的Item點選事件實現
總是看書上寫著回調回調,以為就是函式呼叫換了個名字,尤其是看了Button的點選事件實現後,覺得不就是觸發機制。 A事件發生->後臺處理邏輯->告訴前臺怎麼做->結束。 Android常見button點選事件: loginB
RecyclerView條目item點選事件---放大
Adapter–建立介面 //建立介面 public interface RecyInterface{ void vh(Viewholder viewholder); } //宣告介面名 private RecyInterface mRec
關於jquery中 的點選事件,每點一次執行的效果就疊加一次,click是新增點選事件的意思
我本人還是前端的菜鳥,所以一般在寫特效的時候,喜歡用jquery,但是在用jquery的點選事件中,點選後改變容器中的內容,但是發現每點一次就顯示一個內容,點幾次就有幾個。jquery中 的點選事件,每點一次執行的效果就疊加一次,click是新增點選事件的意思。那麼來解決這
RecyclerView的Item點選事件實現總結
自從開始使用RecyclerView代替ListView,會發現有很多地方需要學習。前一段時間的學習記錄有: 實現 RecyclerView的Item的點選事件有三種方式: 在建立 ItemView時新增點選監聽 當 ItemView attach Recycle
【菜鳥之路】RecyclerView新增Item點選事件
今天下午繼續在專案中學著做RecyclerView,想給每個Item新增一個點選跳轉,翻了翻買的兩本書發現沒有呃,只能百度+看看網上前輩們的程式碼了。 翻了一些比較不錯的文章,瞭解到大概的幾種實現方法: 1.通過RecyclerView中
實現RecyclerView的item點選事件的內部監聽器
程式碼如下: public class myViewholder extends RecyclerView.ViewHolder implements View.OnClickListener{ private TextView tv_bookname;
UIWebview獲取網頁中所有圖片並加入點選事件,實現瀏覽圖片的效果
- (void)webViewDidFinishLoad:(UIWebView *)aWebView { //調整字號 NSString *str = @"document.getElementsByTagName('body')[0].style.webkitTe
RecyclerView通用adapter以及item點選事件的實現
今天實現內容如下: 1.實現recyclerview通用的adapter CommonAdapter 2.實現recyclerview item的點選事件 先上效果圖 viewpager+f
Android 中螢幕點選事件的實現
在android下,事件的發生是在監聽器下進行,android系統可以響應按鍵事件和觸控式螢幕事件,事件說明如下: 常用實現OnClickListener,OnTouchListener,OnFocu
Recyclerview或Listview實時重新整理,item點選事件失效的解決方法
問題場景: 本人最近在做一個關於藍芽開發的Demo,在掃描藍芽裝置的時候會產生回撥,並會返回BluetoothDevice和rssi,這個rssi就是掃描到的這個裝置的訊號。 注意,這個回撥不是搜尋到1個裝置後就只回調一次這個裝置,而是隻要掃描到了就會回
RecyclerView使用,RecyclerView使用,增加一個item,刪除一個item,更新資料,item點選事件
build.gradle compile 'com.android.support:appcompat-v7:24.2.0' compile 'com.android.support:recyclerview-v7:24.2.0' main_a
recyclerview巢狀GridView去遮蔽後者的點選事件,而是前者響應到事件。
無論是標題中的巢狀方式,還是其它列表控制元件之間的巢狀,都適用。 1、在GirdView的所在佈局的根佈局中設定改屬性: android:descendantFocusability="blacksDescendants" 2、動態設定GirdView的如下屬性: gridvi
Android Studio ListView的item點選事件彈出AlertDialog,和item的滑動
首先看看效果圖: 點選彈出AlertDialog的確認框! (一)第一步,建立一個xml檔案顯示item的佈局 student_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa
js迴圈遍歷ul中li的點選事件,給給選中li新增css
功能:對於一個ul中固定的li個數,當點選其中一個li時,改變選中li的顏色;同時改變對應的另一個ul中li的顏色頁面初始化的介面:HTML: <div > <label>其他推薦:</lab