欢迎光临散文网 会员登陆 & 注册

android开发 最精简的 RecyclerView

2023-07-05 04:33 作者:翼618  | 我要投稿

啊,关于RecyclerView的帖子讲的实在是太详细太繁琐了,

我这里弄一个最简单的,要做复杂的东西也是从简单的开始!

用到的东西分4块  

·                       RecyclerView   XML布局 

                        Activity 的设置代码

                        Adapter 设置RecyclerView 里面的实质内容

                        Adapter 使用到的布局文件




1 首先是布局,直接复制拿走把,可以随便改

   <android.support.v7.widget.RecyclerView

        android:id="@+id/rv_list"

        android:layout_width="match_parent"

        android:layout_height="match_parent" />


------------我是分割线------------------------

2 Activity部分代码  就是声明一些变量 然后一个函数方法


     private RecyclerView mRecycleView;

    private NewAdapter mAdapter;//适配器

    private LinearLayoutManager mLinearLayoutManager;//布局管理器

    private List mList;

    Context mContext;



    private void SetRecycleView() {

        mList = new ArrayList();

// 这里是数据,可以根据实际需要来修改类型 改了之后 取的部分跟着修改就好

        for (int i = 0; i < 5; i++) {

            mList.add("" + i);

        }

        mRecycleView = (RecyclerView) findViewById(R.id.rv_list);

        //创建布局管理器,垂直设置LinearLayoutManager.VERTICAL,水平设置LinearLayoutManager.HORIZONTAL

        mLinearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);

        //创建适配器,将数据传递给适配器

        mAdapter = new NewAdapter(mList, mContext);

        //设置布局管理器

        mRecycleView.setLayoutManager(mLinearLayoutManager);

        //设置适配器adapter

        mRecycleView.setAdapter(mAdapter);

    }


------------我是分割线------------------------


    /**

     * 切换数据  这里放个切换刷新的方法 就是更改mList 后调用notifyDataSetChanged

     * 没这需要的可以无视这个方法

     */

    private void Switch() {

        mList.clear();//清除数据

        mAdapter.notifyDataSetChanged();//刷新RecycleView

    }


------------我是分割线------------------------

3 Adapter 部分 你可以在这里更改对应的布局,对应的数据,对应的点击事件等等



public class NewAdapter extends RecyclerView.Adapter<NewAdapter.MyHolder> {


    private List mList;//数据源


    Context mContext;


    public NewAdapter(List list, Context mContextS) {

        mList = list;

        mContext = mContextS;

    }


    //创建ViewHolder并返回,后续item布局里控件都是从ViewHolder中取出

    @Override

    public NewAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        //将我们自定义的item布局R.layout.item_one转换为View

        View view = LayoutInflater.from(parent.getContext())

                .inflate(R.layout.item_new_adapter, parent, false);

        //将view传递给我们自定义的ViewHolder

        NewAdapter.MyHolder holder = new NewAdapter.MyHolder(view);

        //返回这个MyHolder实体

        return holder;

    }


    //通过方法提供的ViewHolder,将数据绑定到ViewHolder中

    @Override

    public void onBindViewHolder(NewAdapter.MyHolder holder, int position) {

        holder.tv1.setText(mList.get(position).toString());

    }


    //获取数据源总的条数

    @Override

    public int getItemCount() {

        return mList.size();

    }


    /**

     * 自定义的ViewHolder

     */

    class MyHolder extends RecyclerView.ViewHolder {


        TextView tv1;

        public MyHolder(View itemView) {

            super(itemView);

            tv1 = itemView.findViewById(R.id.tv1);

            tv1.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View view) {


                }

            });

        }


    }


}

------------我是分割线------------------------

4 Adapter 对应的布局文件,当然你新建一个也是可以

我这里只列了一个TextView,一般需求都要自己修改 ID对得上,能取到修改就没问题了


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:orientation="vertical">



            <TextView

                android:id="@+id/tv1"

                android:layout_width="0dp"

                android:layout_height="match_parent"

                android:layout_weight="1"

                android:gravity="center_vertical"

                android:text="2023/0605"

                android:textColor="#000000"

                android:textSize="@dimen/text_1"

                android:textStyle="bold" />



</LinearLayout>


android开发 最精简的 RecyclerView的评论 (共 条)

分享到微博请遵守国家法律