Giter Site home page Giter Site logo

androidxrecyclerview's Introduction

RecyclerView(RecyclerView)

使用说明: 添加引用

    implementation libs.xRecyclerView
    或
    implementation "com.joyoung.smartrobot:smartrobot-xrecylerview:1.0.0-SNAPSHOT"

- 分隔线 的使用

        //添加分隔线(竖线)
        VerticalDividerItemDecoration decoration = new VerticalDividerItemDecoration.Builder(this)
                .colorResId(R.color.colorPrimary)
                .sizeResId(R.dimen.dp3)
                .build();
        mRecyclerView.addItemDecoration(decoration);

        //添加分隔线(横线)
        HorizontalDividerItemDecoration decorationH = new HorizontalDividerItemDecoration.Builder(this)
                .colorResId(R.color.colorPrimary)
                .sizeResId(R.dimen.dp3)
                .showLastDivider()
                .build();
        mRecyclerView.addItemDecoration(decorationH);

- DataBindingAdapter 的使用

                 //数据源
                List<String> list = getListData();

                //创建adapter,匿名类的实现方式
                DataBindingBaseAdapter adapter = new DataBindingBaseAdapter<XTemMainBinding, String>(list, R.layout.x_tem_main) {
                    @Override
                    public void setOnBindViewHolder(XTemMainBinding binding, String data) {
                        binding.textView.setText(data);
                    }
                };

                //添加分隔线(横线)
                HorizontalDividerItemDecoration decorationH = new HorizontalDividerItemDecoration.Builder(this)
                        .colorResId(R.color.colorPrimary)
                        .sizeResId(R.dimen.dp3)
                        .showLastDivider()
                        .build();
                mRecyclerView.addItemDecoration(decorationH);

                //添加点击事件
                adapter.setOnItemClick(new DataBindingListener.OnItemClickListener<XTemMainBinding, String>() {
                    @Override
                    public void click(View view, XTemMainBinding binding, int position, String data) {
                        Toast.makeText(MainActivity2.this, data, Toast.LENGTH_SHORT).show();
                    }
                });

                //添加长按事件
                adapter.setOnLongItemClickListener(new DataBindingListener.OnLongItemClickListener<XTemMainBinding, String>() {
                    @Override
                    public void click(View view, XTemMainBinding binding, int position, String data) {
                        Toast.makeText(MainActivity2.this, data + "$$", Toast.LENGTH_SHORT).show();
                    }
                });
                //设置管理器
                mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
                //设置adapter
                mRecyclerView.setAdapter(adapter);

- WrapperAdapter 的使用(单一Item)

     //数据源
            List<String> mData1 = getListData();

            //创建adapter,匿名类的实现方式
            WrapperAdapter  adapter = new WrapperAdapter(MainActivity3.this) {
                @Override
                public void setItemData(WrapperViewHolder holder, Object object) {
                    String da = (String) object;
                    holder.setText(R.id.textView, da);
                }
            };

            //点击事件
            adapter.setOnItemClick(new IWrapperAdapterListener.OnItemClick() {
                @Override
                public void click(View view, WrapperViewHolder holder, int position, Object data) {
                    Toast.makeText(MainActivity3.this, data.toString(), Toast.LENGTH_SHORT).show();
                }
            });

            //长按事件
            adapter.setOnItemLongClick(new IWrapperAdapterListener.OnItemLongClick() {
                @Override
                public void longClick(View view, WrapperViewHolder holder, int position, Object data) {
                    Toast.makeText(MainActivity3.this, data.toString() + "$$", Toast.LENGTH_SHORT).show();
                }
            });

            //设置布局与数据源
            adapter.addHolder(R.layout.x_tem_main_2, mData1);

            //添加分隔线(横线)
            HorizontalDividerItemDecoration decorationH = new HorizontalDividerItemDecoration.Builder(this)
                    .colorResId(R.color.colorPrimary)
                    .sizeResId(R.dimen.dp3)
                    .showLastDivider()
                    .build();
            mRecyclerView.addItemDecoration(decorationH);

            //设置管理器
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
            //设置adapter
            mRecyclerView.setAdapter(adapter);

- 多item Adapter 使用(统一数据类型)

        //数据源 1
        List<String> mData1 = getListData();
        //数据源 2
        List<String> mData2 = new ArrayList<>();
        mData2.add("1111");
        mData2.add("2222");
        mData2.add("3333");
        mData2.add("4444");
        mData2.add("5555");

        //创建adapter,匿名类的实现方式
        WrapperAdapter adapter = new WrapperAdapter(MainActivity4.this) {
            @Override
            public void setItemData(WrapperViewHolder holder, Object object) {
                String da = (String) object;
                holder.setText(R.id.textView, da);
            }
        };

        //点击事件
        adapter.setOnItemClick(new IWrapperAdapterListener.OnItemClick() {
            @Override
            public void click(View view, WrapperViewHolder holder, int position, Object data) {
                Toast.makeText(MainActivity4.this, data.toString(), Toast.LENGTH_SHORT).show();
            }
        });

        //长按事件
        adapter.setOnItemLongClick(new IWrapperAdapterListener.OnItemLongClick() {
            @Override
            public void longClick(View view, WrapperViewHolder holder, int position, Object data) {
                Toast.makeText(MainActivity4.this, data.toString() + "$$", Toast.LENGTH_SHORT).show();
            }
        });

        //设置布局与数据源-1
        adapter.addHolder(R.layout.x_tem_main_2, mData1);
        //设置布局与数据源-2
        adapter.addHolder(R.layout.x_tem_main_3, mData2);

        //添加分隔线(横线)
        HorizontalDividerItemDecoration decorationH = new HorizontalDividerItemDecoration.Builder(this)
                .colorResId(R.color.colorPrimary)
                .sizeResId(R.dimen.dp3)
                .showLastDivider()
                .build();
        mRecyclerView.addItemDecoration(decorationH);

        //设置管理器
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        //设置adapter
        mRecyclerView.setAdapter(adapter);

- 多item Adapter 使用(混合布局)

  //实现 混合布局的业务接口
    class MyWrapperAdapterMoreType implements IWrapperAdapterMoreType {
        int type;
        String str;

        MyWrapperAdapterMoreType(int type, String str) {
            this.type = type;
            this.str = str;
        }

        @Override
        public int getItemViewType() {
            return type;
        }

        @Override
        public int getItemViewId() {
            if (type == 1) {
                return R.layout.x_tem_main_2;
            } else if (type == 2) {
                return R.layout.x_tem_main_3;
            } else {
                return R.layout.x_tem_main_2;
            }
        }
    }


            //数据源 1
            List<String> mData1 = getListData();
            //数据源 2
            List<IWrapperAdapterMoreType> mData2 = new ArrayList<>();
            mData2.add(new MyWrapperAdapterMoreType(3, "我是3"));
            mData2.add(new MyWrapperAdapterMoreType(2, "我是2"));
            mData2.add(new MyWrapperAdapterMoreType(1, "我是1"));
            mData2.add(new MyWrapperAdapterMoreType(3, "我是3"));
            mData2.add(new MyWrapperAdapterMoreType(2, "我是2"));

            //创建adapter,匿名类的实现方式
            //根据类型显示数据
            WrapperAdapter adapter = new WrapperAdapter(MainActivity5.this) {
                @Override
                public void setItemData(WrapperViewHolder holder, Object object) {

                    if (object instanceof String) {
                        String da = (String) object;
                        holder.setText(R.id.textView, da);

                    } else if (object instanceof MyWrapperAdapterMoreType) {
                        MyWrapperAdapterMoreType da = (MyWrapperAdapterMoreType) object;
                        holder.setText(R.id.textView, da.str);
                    }
                }
            };

            //点击事件
            adapter.setOnItemClick(new IWrapperAdapterListener.OnItemClick() {
                @Override
                public void click(View view, WrapperViewHolder holder, int position, Object data) {
                    Toast.makeText(MainActivity5.this, data.toString(), Toast.LENGTH_SHORT).show();
                }
            });

            //长按事件
            adapter.setOnItemLongClick(new IWrapperAdapterListener.OnItemLongClick() {
                @Override
                public void longClick(View view, WrapperViewHolder holder, int position, Object data) {
                    Toast.makeText(MainActivity5.this, data.toString() + "$$", Toast.LENGTH_SHORT).show();
                }
            });

            //设置布局与数据源-1
            adapter.addHolder(R.layout.x_tem_main_2, mData1);
            //设置布局与数据源-2
            adapter.addMoreHolder(mData2);

            //添加分隔线(横线)
            HorizontalDividerItemDecoration decorationH = new HorizontalDividerItemDecoration.Builder(this)
                    .colorResId(R.color.colorPrimary)
                    .sizeResId(R.dimen.dp3)
                    .showLastDivider()
                    .build();
            mRecyclerView.addItemDecoration(decorationH);

            //设置管理器
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
            //设置adapter
            mRecyclerView.setAdapter(adapter);

- 刷新与加载的RecyclerView

  • 在xml中的使用
    <com.joyoung.xrecylerview.recyclerview.XRecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </com.joyoung.xrecylerview.recyclerview.XRecyclerView>
- 下拉刷新监听
        //刷新
        mRecyclerView.setRefreshListener(new IXRecyclerViewBiz.RefreshListener() {
            @Override
            public void onRefreshListener() {
                //清楚原数据
                 ***...
                //设置新数据
                  ***...
                //刷新
                 ***...
                //调用复位
                mRecyclerView.restorationRefreshingOrLoading();
            }
        });
  • 加载监听
   //加载

       mRecyclerView.setLoadingListener(new IXRecyclerViewBiz.LoadingListener() {
           @Override
           public void onLoadingListener() {
              //设置新数据
              ***...
              //刷新
              ***...
              //调用复位
              mRecyclerView.restorationRefreshingOrLoading();

               //条件不满足时,调用完成加载完成。
               if (条件) {
                   //完成加载
                   mRecyclerView.finishLoading();
               }
               Log.e("AAA", "加载");
           }
       });

androidxrecyclerview's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.