
activity_main.xml中引入RecyclerVIEw布局<linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:ID="@+ID/root_layout" androID:orIEntation="vertical"> <androIDx.recyclervIEw.Widget.RecyclerVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:ID="@+ID/recycler_vIEw"/> </linearLayout>注意:要把RecyclerVIEw完整的包路径写出来,因为RecyclerVIEw不是内置内置在SDK当中的。
定义一个实体类,作为RecyclerVIEw适配器的适配类型public class Bean { public String name; public int imageID; public Bean(String name, int imageID) { this.name =name; this.imageID =imageID ; } public String getname() { return name; } public voID setname(String name) { this.name = name; } public int getimageID () { return imageID ; } public voID setimageID (int imageID) { this.imageID =imageID; }}给适配器创建一个布局<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_margintop="5dp" androID:layout_marginBottom="5dp" androID:layout_marginleft="5dp" androID:layout_marginRight="5dp"> <ImageVIEw androID:layout_wIDth="75dp" androID:layout_height="75dp" androID:ID="@+ID/item_image"/> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:ID="@+ID/item_name" androID:gravity="center_vertical"/></linearLayout>创建适配器,让这个适配器继承自RecyclerVIEw.Adapter ,并将泛型指定为MyAdapter.VIEwHolder。其中VIEwHolder是我们在MyAdapter中定义的一个内部类。public class MyAdapter extends RecyclerVIEw.Adapter <MyAdapter.VIEwHolder> { private List <Bean> mBean; public MyAdapter(List <Bean> mBean ) { super(); this.mBean = mBean; } static class VIEwHolder extends RecyclerVIEw.VIEwHolder { TextVIEw textVIEw; ImageVIEw imageVIEw; public VIEwHolder(VIEw vIEw) { super(vIEw); textVIEw = (TextVIEw) vIEw.findVIEwByID(R.ID.item_name); imageVIEw = (ImageVIEw) vIEw.findVIEwByID(R.ID.item_image); } } @NonNull @OverrIDe public VIEwHolder onCreateVIEwHolder(@NonNull VIEwGroup parent, int vIEwType) { VIEw vIEw = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_bean,parent ,false); final VIEwHolder holder = new VIEwHolder(vIEw); holder.textVIEw.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Toast.makeText(v.getContext(),"textvIEw",Toast.LENGTH_SHORT).show(); } }); holder.imageVIEw.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Toast.makeText(v.getContext(),"imagevIEw",Toast.LENGTH_SHORT).show(); } }); return holder; } @OverrIDe public voID onBindVIEwHolder(@NonNull VIEwHolder holder, int position) { Bean bean = mBean.get(position); holder.textVIEw.setText(bean.getname()); holder.imageVIEw.setBackgroundResource(bean.getimageID()); } @OverrIDe public int getItemCount() { return mBean.size(); }}VIEwHolder的构造函数中要传入一个人参数VIEw,这个参数通常就是RecyclerVIEw子项的最外层布局,那么我们就可以通过findVIEwByID()方法来获取到布局中的ImageVIEw和TextVIEw的实例了。
由于MyAdapter 是继承自RecyclerVIEw.Adapter 的,那么就必须重写onCreateVIEwHolder() 、onBindVIEwHolder() 和getItemCount() 这3个方法。
onCreateVIEwHolder() 方法是用于创建VIEwHolder 实例的,我们在这个方法中将adapter_item 布局加载进来,然后创建一个VIEwHolder 实例,并把加载出来的布局传入到构造函数当中,最后将VIEwHolder 的实例返回。
onBindVIEwHolder() 方法是用于对RecyclerVIEw子项的数据进行赋值的,会在每个子项被滚动到屏幕内的时候执行,这里我们通过position 参数得到当前项的实例,然后再将数据设置到VIEwHolder 的ImageVIEw和TextVIEw当中即可。
getItemCount() 方法就非常简单了,它用于告诉RecyclerVIEw一共有多少子项,直接返回数据源的长度就可以了。
MainActivity中的代码public class MainActivity extends AppCompatActivity { RecyclerVIEw recyclerVIEw; private List <Bean> mBean = new ArrayList<Bean>(); private voID initData(){ Bean bean1 = new Bean("App_1",R.drawable.ic_launcher_background); mBean.add(bean1); Bean bean2 = new Bean("App_2",R.drawable.ic_launcher_background); mBean.add(bean2); Bean bean3 = new Bean("App_3",R.drawable.ic_launcher_background); mBean.add(bean3); Bean bean4 = new Bean("App_4",R.drawable.ic_launcher_background); mBean.add(bean4); Bean bean5 = new Bean("App_5",R.drawable.ic_launcher_background); mBean.add(bean5); Bean bean6 = new Bean("App_6",R.drawable.ic_launcher_background); mBean.add(bean6); Bean bean7 = new Bean("App_7",R.drawable.ic_launcher_background); mBean.add(bean7); Bean bean8 = new Bean("App_8",R.drawable.ic_launcher_background); mBean.add(bean8); Bean bean9 = new Bean("App_9",R.drawable.ic_launcher_background); mBean.add(bean9); } @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); initData(); Actionbar actionbar = getSupportActionbar(); if(actionbar != null) { actionbar.setHomebuttonEnabled(true); actionbar.setdisplayHomeAsUpEnabled(true); } recyclerVIEw = (RecyclerVIEw) findVIEwByID(R.ID.recycler_vIEw); linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(this); linearlayoutmanager.setorIEntation(linearlayoutmanager.HORIZONTAL); recyclerVIEw.setLayoutManager(linearlayoutmanager); MyAdapter myAdapter = new MyAdapter(mBean); recyclerVIEw.setAdapter(myAdapter); } @OverrIDe public boolean onoptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemID()) { case androID.R.ID.home : // Intent backIntent = new Intent(Login.this,MainActivity.class); // startActivity(backIntent); finish(); break; } return super.onoptionsItemSelected(item); }} 总结 以上是内存溢出为你收集整理的基于Android的RecyclerView的使用全部内容,希望文章能够帮你解决基于Android的RecyclerView的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)