Android开发学习--RecycleView入门
Posted 蒙小米
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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入门的主要内容,如果未能解决你的问题,请参考以下文章