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

Android TV開發(fā):使用RecycleView實現(xiàn)橫向的Listview并響應點擊事件的代碼

 更新時間:2018年05月15日 10:23:45   作者:meetings  
這篇文章主要介紹了Android TV開發(fā):使用RecycleView實現(xiàn)橫向的Listview并響應點擊事件的代碼,具有很好的參考價值,希望對大家有所幫助,一起跟隨小編過來看看吧

本文講述了Android TV開發(fā):使用RecycleView實現(xiàn)橫向的Listview并響應點擊事件的代碼。分享給大家供大家參考,具體如下:

1.先貼出自己的效果圖(可橫向滾動,并響應item點擊事件):

2.關于點擊事件的實現(xiàn)細節(jié)

核心:使用接口回調

在adapter中自己定義了個接口,然后在onBindViewHolder中去為holder.itemView去設置相應的監(jiān)聽最后回調我們設置的監(jiān)聽。

class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> 
{ 
//... 
 public interface OnItemClickLitener 
 { 
 void onItemClick(View view, int position); 
 void onItemLongClick(View view , int position); 
 } 
 private OnItemClickLitener mOnItemClickLitener; 
 public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) 
 { 
 this.mOnItemClickLitener = mOnItemClickLitener; 
 } 
 @Override 
 public void onBindViewHolder(final MyViewHolder holder, final int position) 
 { 
 holder.tv.setText(mDatas.get(position)); 
 // 如果設置了回調,則設置點擊事件 
 if (mOnItemClickLitener != null) 
 { 
  holder.itemView.setOnClickListener(new OnClickListener() 
  { 
  @Override 
  public void onClick(View v) 
  { 
   int pos = holder.getLayoutPosition(); 
   mOnItemClickLitener.onItemClick(holder.itemView, pos); 
  } 
  }); 
  holder.itemView.setOnLongClickListener(new OnLongClickListener() 
  { 
  @Override 
  public boolean onLongClick(View v) 
  { 
   int pos = holder.getLayoutPosition(); 
   mOnItemClickLitener.onItemLongClick(holder.itemView, pos); 
   return false; 
  } 
  }); 
 } 
 } 
//... 
} 

在activity設置監(jiān)聽,并實現(xiàn)接口

mAdapter.setOnItemClickLitener(new OnItemClickLitener() 
 { 
  @Override 
  public void onItemClick(View view, int position) 
  { 
  Toast.makeText(HomeActivity.this, position + " click", 
   Toast.LENGTH_SHORT).show(); 
  } 
  @Override 
  public void onItemLongClick(View view, int position) 
  { 
  Toast.makeText(HomeActivity.this, position + " long click", 
   Toast.LENGTH_SHORT).show(); 
   mAdapter.removeData(position); 
  } 
 }); 

3.實現(xiàn)橫向效果  

核心:LinearLayoutManager

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext,LinearLayoutManager.HORIZONTAL,false); 
mRecyclerView.setLayoutManager(linearLayoutManager); 

4. 讓RecyclerView的子item獲得焦點

mRecyclerView.setOnFocusChangeListener(new OnFocusChangeListener() { 
  @Override 
  public void onFocusChange(View v, boolean hasFocus) { 
  if(hasFocus){ 
   if(mRecyclerView.getChildCount()>0){ 
   mRecyclerView.getChildAt(0).requestFocus(); 
   } 
  } 
  } 
 });

5.代碼實現(xiàn):

//定義自己的布局文件 
public class EasyLayout extends LinearLayout{ 
 private MyAdapter mAdapter; 
 private RecyclerView mRecyclerView; 
 private Context mContext; 
 private List<String> mDatas; 
 public EasyLayout(Context context) { 
 super(context); 
 mDatas = new ArrayList<String>(); 
 for (int i=0;i<20;i++){ 
  String str = "圖片:"+i; 
  mDatas.add(str); 
 } 
 this.setBackgroundColor(Color.parseColor("#407EAf")); 
 this.mContext = context; 
 this.setOrientation(VERTICAL); 
 createLayout(); 
 } 
 private void createLayout() { 
 //空出上邊留白 
 TextView te = new TextView(mContext); 
 ViewGroup.LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,160); 
 this.addView(te,lp); 
 mRecyclerView = new RecyclerView(mContext); 
 lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
 this.addView(mRecyclerView,lp); 
 
 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext,LinearLayoutManager.HORIZONTAL,false); 
 mRecyclerView.setLayoutManager(linearLayoutManager); 
 //設置適配器 
 mAdapter = new MyAdapter( mContext,mDatas); 
 mRecyclerView.setAdapter(mAdapter); 
 //監(jiān)聽點擊事件 
 mAdapter.setmOnItemClickLitener(new MyAdapter.OnItemClickLitener() { 
  @Override 
  public void onItemClick(View view, int position) { 
  Toast.makeText(mContext,"點擊了圖片:"+position,Toast.LENGTH_SHORT).show(); 
  } 
 }); 
 
 //讓RecyclerView的子item獲得焦點 
 mRecyclerView.setOnFocusChangeListener(new OnFocusChangeListener() { 
  @Override 
  public void onFocusChange(View v, boolean hasFocus) { 
  if(hasFocus){ 
   if(mRecyclerView.getChildCount()>0){ 
   mRecyclerView.getChildAt(0).requestFocus(); 
   } 
  } 
  } 
 }); 
 } 
//定義適配器類 
 public static class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> 
 { 
 private Context mContext; 
 private List<String> mDatas; 
 private LayoutInflater mInflater; 
 private OnItemClickLitener mOnItemClickLitener; 
 //定義點擊事件的接口 
 public interface OnItemClickLitener 
 { 
  void onItemClick(View view, int position); 
 } 
 public MyAdapter( Context mContext,List<String> datats) 
 { 
  this.mContext = mContext; 
  this.mDatas = datats; 
  mInflater = LayoutInflater.from(this.mContext); 
 } 
 public void setmOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) 
 { 
  this.mOnItemClickLitener = mOnItemClickLitener; 
 } 
 @Override 
 public int getItemCount() 
 { 
  return mDatas.size(); 
 } 
 /** 
  * 創(chuàng)建ViewHolder 
  */ 
 @Override 
 public ViewHolder onCreateViewHolder(ViewGroup parent, int i) 
 { 
  View view = mInflater.inflate(R.layout.easy_item,null); 
  ViewHolder viewHolder = new ViewHolder(view); 
  return viewHolder; 
 } 
 /** 
  * 設置值 
  */ 
 @Override 
 public void onBindViewHolder(final ViewHolder viewHolder, final int position) 
 { 
  viewHolder.btn.setText(mDatas.get(position)); 
  viewHolder.btn.setTextSize(40); 
  viewHolder.btn.setGravity(Gravity.CENTER); 
  //設置回調 
  if (mOnItemClickLitener != null){ 
  viewHolder.btn.setOnClickListener(new OnClickListener() { 
   @Override 
   public void onClick(View v) { 
   int pos = viewHolder.getLayoutPosition(); 
   mOnItemClickLitener.onItemClick( viewHolder.btn,pos); 
   } 
  }); 
  } 
 } 
 public class ViewHolder extends RecyclerView.ViewHolder //我們需要inflate的item布局需要傳入 
 { 
  Button btn; 
  public ViewHolder(View arg0) 
  { 
  super(arg0); 
  btn = (Button) arg0.findViewById(R.id.btn); 
  } 
 } 
 } 
//在activity加載自己的布局 
public class GallarRecyActivity extends AppCompatActivity { 
 @Override 
 protected void onCreate(@Nullable Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 EasyLayout easyLayout = new EasyLayout(this); 
 setContentView(easyLayout); 
 } 
} 

easy_item.xml文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:orientation="horizontal" android:layout_width="match_parent" 
 android:layout_height="match_parent"> 
 <Button 
 android:id="@+id/btn" 
 android:layout_width="320dp" 
 android:layout_height="430dp" /> 
</LinearLayout>

6.源碼及apk

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • android之計時器(Chronometer)的使用以及常用的方法

    android之計時器(Chronometer)的使用以及常用的方法

    在Android的SDK中,為我們提供了一個計時器,這個計時器稱為Chronometer,我們可以成它為Android的一個組件,同時它也具備自己獨有的方法
    2013-01-01
  • Android Bitmap詳解及Bitmap的內存優(yōu)化

    Android Bitmap詳解及Bitmap的內存優(yōu)化

    這篇文章主要介紹了Android Bitmap詳解及Bitmap的內存優(yōu)化的相關資料,Bitmap是Android系統(tǒng)中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進行圖像剪切、旋轉、縮放等操作,并可以指定格式保存圖像文件,需要的朋友可以參考下
    2017-03-03
  • Android傳遞Bitmap對象在兩個Activity之間

    Android傳遞Bitmap對象在兩個Activity之間

    這篇文章主要介紹了Android傳遞Bitmap對象在兩個Activity之間的相關資料,需要的朋友可以參考下
    2016-01-01
  • Android編程調用Camera和相冊功能詳解

    Android編程調用Camera和相冊功能詳解

    這篇文章主要介紹了Android編程調用Camera和相冊功能,結合實例形式分析了Android的拍照及相冊調用功能相關實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2017-02-02
  • Android開發(fā)之Button事件實現(xiàn)與監(jiān)聽方法總結

    Android開發(fā)之Button事件實現(xiàn)與監(jiān)聽方法總結

    這篇文章主要介紹了Android開發(fā)之Button事件實現(xiàn)與監(jiān)聽方法,結合實例形式總結分析了Android開發(fā)中Button事件的兩種實現(xiàn)方法以及針對Button控件的幾種常用監(jiān)聽方法,需要的朋友可以參考下
    2016-01-01
  • Android實現(xiàn)環(huán)信修改頭像和昵稱

    Android實現(xiàn)環(huán)信修改頭像和昵稱

    這篇文章主要為大家詳細介紹了Android實現(xiàn)環(huán)信修改頭像和昵稱,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Android studio實現(xiàn)菜單效果

    Android studio實現(xiàn)菜單效果

    這篇文章主要為大家詳細介紹了Android studio實現(xiàn)菜單效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Android實現(xiàn)折線走勢圖

    Android實現(xiàn)折線走勢圖

    這篇文章主要為大家詳細介紹了Android實現(xiàn)折線走勢圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android使用WebView實現(xiàn)截圖分享功能

    Android使用WebView實現(xiàn)截圖分享功能

    這篇文章主要為大家詳細介紹了Android使用WebView實現(xiàn)截圖分享功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android之AnimationDrawable簡單模擬動態(tài)圖

    Android之AnimationDrawable簡單模擬動態(tài)圖

    這篇文章主要為大家詳細介紹了Android之AnimationDrawable簡單模擬動態(tài)圖的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論

乡宁县| 西吉县| 庄浪县| 华亭县| 望江县| 南溪县| 府谷县| 洮南市| 蒙阴县| 烟台市| 全州县| 东阿县| 庄河市| 乳源| 涞源县| 南和县| 林甸县| 启东市| 诸暨市| 高唐县| 博客| 梓潼县| 金寨县| 哈密市| 进贤县| 大丰市| 门源| 水城县| 珲春市| 怀来县| 百色市| 沁水县| 梁河县| 沂南县| 大关县| 定南县| 汾阳市| 昌平区| 繁昌县| 肇东市| 武乡县|