知识的价值不在于占有,而在于使用。这篇文章主要讲述Android开发学习--RecycleView入门相关的知识,希望能为你提供帮助。
该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView
通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。
- 你想要控制其显示的方式,请通过布局管理器LayoutManager
- 你想要控制Item间的间隔(可绘制),请通过ItemDecoration
- 你想要控制Item增删的动画,请通过ItemAnimator
- 你想要控制点击、长按事件,请自己写
< ?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入门】
推荐阅读
- App Extensions篇之Sticker Pack Extension
- Android录屏应用开发研究
- Appserv 配置ssl证书
- bWAPP----HTML Injection - Stored (Blog)
- Android设置系统开机自己主动永不休眠
- Android studio 插件之 GsonFormat (自己主动生成javabean)
- Android开发学习--MVP模式入门
- 在android开发中如何使用JavaMail程序
- Android 音频播放——AudioTrack直接播PCMMediaPlayer播媒体文件可以是audio