基于Android的RecyclerView的使用

基于Android的RecyclerView的使用,第1张

概述在activity_main.xml中引入RecyclerView布局<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+idoot_layout"android:orientation="vertical&qu 在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()方法来获取到布局中的ImageVIEwTextVIEw的实例了。

由于MyAdapter 是继承自RecyclerVIEw.Adapter 的,那么就必须重写onCreateVIEwHolder() 、onBindVIEwHolder() 和getItemCount() 这3个方法。

onCreateVIEwHolder() 方法是用于创建VIEwHolder 实例的,我们在这个方法中将adapter_item 布局加载进来,然后创建一个VIEwHolder 实例,并把加载出来的布局传入到构造函数当中,最后将VIEwHolder 的实例返回。

onBindVIEwHolder() 方法是用于对RecyclerVIEw子项的数据进行赋值的,会在每个子项被滚动到屏幕内的时候执行,这里我们通过position 参数得到当前项的实例,然后再将数据设置到VIEwHolderImageVIEwTextVIEw当中即可。

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的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1053286.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存