Android开发学习--RecycleView入门

知识的价值不在于占有,而在于使用。这篇文章主要讲述Android开发学习--RecycleView入门相关的知识,希望能为你提供帮助。
该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView
通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。

  • 你想要控制其显示的方式,请通过布局管理器LayoutManager
  • 你想要控制Item间的间隔(可绘制),请通过ItemDecoration
  • 你想要控制Item增删的动画,请通过ItemAnimator
  • 你想要控制点击、长按事件,请自己写
activity_main.xml
< ?xml version="1.0" encoding="utf-8"?> < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > < android.support.v7.widget.RecyclerView android:id="@+id/id_recyclerview_horizontal" android:layout_width="match_parent" android:layout_height="120dp" android:layout_centerVertical="true" android:scrollbars="none" /> < /RelativeLayout>

item.xml
< ?xml version="1.0" encoding="utf-8"?> < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="120dp" android:layout_height="120dp"> < ImageView android:id="@+id/iv" android:layout_width="80dp" android:layout_height="80dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_margin="5dp" android:scaleType="centerCrop"/> < TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/iv" android:layout_centerHorizontal="true" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:text="some info" android:textSize="12dp" /> < /RelativeLayout>

MainActivity.java
public class MainActivity extends AppCompatActivity {private RecyclerView mRV; private List< Integer> mDatas; private GalleryAdapter madapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); mRV = (RecyclerView) findViewById(R.id.id_recyclerview_horizontal); LinearLayoutManager li = new LinearLayoutManager(this); li.setOrientation(LinearLayoutManager.HORIZONTAL); mRV.setLayoutManager(li); //设置布局管理器madapter = new GalleryAdapter(this,mDatas); mRV.setAdapter(madapter); //设置adapter } private void initData(){ mDatas = new ArrayList< Integer> (Arrays.asList(R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.e, R.drawable.f, R.drawable.g)); }}

GalleryAdapter.java

public class GalleryAdapter extends RecyclerView.Adapter< GalleryAdapter.ViewHolder> { private LayoutInflater mInflter; private List< Integer> mdatas; public GalleryAdapter(Context context, List< Integer> datas){ mInflter = LayoutInflater.from(context); mdatas = datas; }/** * 我们创建的ViewHolder必须继承RecyclerView.ViewHolder,这个RecyclerView.ViewHolder的 * 构造时必须传入一个View,这个View相当于我们ListView getView中的convertView * (即:我们需要inflate的item布局需要传入)。 */ public class ViewHolder extends RecyclerView.ViewHolder{ public ViewHolder(View v){ super(v); }ImageView miv; TextView mtv; }//创建ViewHoler @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflter.inflate(R.layout.item,parent,false); ViewHolder viewHolder = new ViewHolder(view); viewHolder.miv = (ImageView) view.findViewById(R.id.iv); return viewHolder; }//设置值; 将数据绑定至viewholder @Override public void onBindViewHolder(ViewHolder holder, int position) {holder.miv.setImageResource(mdatas.get(position)); }//有多少条数据 @Override public int getItemCount() { return mdatas.size(); }}

【Android开发学习--RecycleView入门】 

    推荐阅读