• 左右联动(一行两条数据)


    效果图:

    1、引入依赖

    2、左侧类型适配器

    3、左侧类型布局文件

    4、右侧内容适配器

    5、右侧内容布局文件

    6、MainActivity代码

    7、MainActivity布局文件

    8、dimens.xml尺寸文件

    9、left_item_check_bg.xml左侧选中的背景文件

    10、item_right_title.xml分组标题文件

    11、ScrollBean实体类

    12、在AndroidManifest.xml中加入权限

    引入依赖:

     先在build.gradle(Project)中加入

    allprojects {
        repositories {
            google()
            jcenter()
            maven { url "https://jitpack.io" }
        }
    }
    

     然后在build.gradle(Module)中加入(加入后记得点击右上角的同步(Sync Now))

    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.47'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.google.android.material:material:1.0.0'
    

    左侧类型适配器(LeftAdapter):

    package com.example.recycleview2.adapter;
    
    import android.graphics.Color;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.core.content.ContextCompat;
    
    import com.chad.library.adapter.base.BaseQuickAdapter;
    import com.chad.library.adapter.base.BaseViewHolder;
    import com.example.recycleview2.R;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class LeftAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
        private List<TextView> tvList = new ArrayList<>();
    
        public LeftAdapter(int layoutResId, @Nullable List<String> data){
            super(layoutResId,data);
        }
    
        @Override
        protected void convert(@NonNull BaseViewHolder helper, String item) {
            helper.setText(R.id.left_text,item).addOnClickListener(R.id.item);
            tvList.add((TextView)helper.getView(R.id.left_text)); //将左侧item中的TextView添加到集合中
            //设置进入页面之后,左边列表的初始状态
            if(tvList != null && getData() != null && tvList.size() == getData().size()){
                selectItemt(0);
            }
            helper.getView(R.id.item).setSelected(true);
        }
    
        public void selectItemt(int i){
            for (int j = 0; j < getData().size(); j++) {
                if( i == j){
    //                tvList.get(j).setBackgroundColor(Color.parseColor("#008577")); //选中的背景
                    tvList.get(j).setBackgroundResource(R.drawable.left_item_check_bg);
                    tvList.get(j).setTextColor(ContextCompat.getColor(mContext,R.color.white));
                }else{
                    tvList.get(j).setBackgroundColor(0xffffffff); //未选中的背景
                    tvList.get(j).setTextColor(ContextCompat.getColor(mContext,R.color.gray));
                }
            }
        }
    }
    

    左侧类型布局文件(item_left.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/item"
        android:padding="5dp"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/left_text"
            android:gravity="center"
            android:singleLine="true"
            android:text="测试"
            android:textColor="#444"
            android:textSize="15sp"
            android:background="#FAFAFA"
            android:layout_width="match_parent"
            android:layout_height="40dp" />
    </LinearLayout>
    

    右侧内容适配器(RightAdapter):

    package com.example.recycleview2.adapter;
    
    import android.media.Image;
    import android.widget.ImageView;
    
    import androidx.annotation.Nullable;
    
    import com.bumptech.glide.Glide;
    import com.chad.library.adapter.base.BaseQuickAdapter;
    import com.chad.library.adapter.base.BaseSectionQuickAdapter;
    import com.chad.library.adapter.base.BaseViewHolder;
    import com.example.recycleview2.R;
    import com.example.recycleview2.entity.ScrollBean;
    
    import java.util.List;
    
    public class RightAdapter extends BaseSectionQuickAdapter<ScrollBean, BaseViewHolder> {
        public RightAdapter(int layoutResId, int sectionHeadResId, List<ScrollBean> data){
            super(layoutResId,sectionHeadResId,data);
        }
    
        @Override
        protected void convertHead(BaseViewHolder helper,ScrollBean item){
            helper.setText(R.id.right_title,item.header);
        }
    
        @Override
        protected void convert(@Nullable BaseViewHolder helper,ScrollBean item){
            ScrollBean.ScrollItemBean itemBean = item.t;
            helper.setText(R.id.main_name,itemBean.getName());
            helper.setText(R.id.main_price,itemBean.getPrice());
            Glide.with(mContext).load(itemBean.getImg()).into((ImageView)helper.getView(R.id.main_image));
        }
    }
    

    右侧内容布局文件(item_right.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="110dp"
        android:layout_margin="3dp"
        app:cardCornerRadius="4dp">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
    
            <ImageView
                android:id="@+id/main_image"
                android:layout_width="match_parent"
                android:layout_height="75dp"
                android:scaleType="centerCrop" />
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:background="#FAFAFA">
    
                <TextView
                    android:text="商品名称"
                    android:id="@+id/main_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="center_horizontal"
                    android:layout_margin="1dp"
                    android:textSize="12sp" />
    
                <TextView
                    android:layout_centerHorizontal="true"
                    android:layout_toLeftOf="@+id/main_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/main_name"
                    android:text="¥"
                    android:textColor="#ff00"
                    android:textSize="7sp" />
    
                <TextView
                    android:layout_centerHorizontal="true"
                    android:id="@+id/main_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/main_name"
                    android:textColor="#ff00"
                    android:textSize="12sp"
                    android:layout_marginBottom="2dp"
                    android:text="20"/>
    
            </RelativeLayout>
        </LinearLayout>
    
    </androidx.cardview.widget.CardView>
    

    MainActivity代码:

    package com.example.recycleview2;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.DividerItemDecoration;
    import androidx.recyclerview.widget.GridLayoutManager;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import android.content.Context;
    import android.graphics.Rect;
    import android.icu.util.LocaleData;
    import android.os.Bundle;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.chad.library.adapter.base.BaseQuickAdapter;
    import com.example.recycleview2.adapter.LeftAdapter;
    import com.example.recycleview2.adapter.RightAdapter;
    import com.example.recycleview2.entity.ScrollBean;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private RecyclerView recyclerLeft,recyclerRight;
        private TextView tvRightTitle; //右侧item标题
        private List<String> leftList; //左侧文本数据
        private List<ScrollBean> rightList; //右侧数据
        private LeftAdapter leftAdapter; //左侧适配器
        private RightAdapter rightAdapter; //右侧适配器
    
        //右侧标题在数据中所对应的数据集合
        private List<Integer> integerList = new ArrayList<>();
        private Context mContext;
    
        private int titleHeight; //标题的高度
        private int first = 0; //右侧第一个item数据
        private GridLayoutManager gridLayoutManager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
    
        }
    
        private void initView(){
            mContext = this;
            recyclerLeft = findViewById(R.id.rec_left);
            recyclerRight = findViewById(R.id.rec_right);
            tvRightTitle = findViewById(R.id.right_title);
            getLeftData(); //获取左侧数据
            getRightData(); //获取右侧数据
            initRightLayout();
            initLeftLayout();
        }
    
        private void getLeftData(){
            leftList = new ArrayList<>();
            leftList.add("星期一");
            leftList.add("星期二");
            leftList.add("星期三");
            leftList.add("星期四");
            leftList.add("星期五");
            leftList.add("星期六");
            leftList.add("星期日");
        }
    
        private void getRightData(){
            String imgUrl = "http://imgm.gmw.cn/attachement/jpg/site215/20190902/3742794414253686953.jpg";
            rightList = new ArrayList<>();
            for (int i = 0; i < leftList.size(); i++) {
                rightList.add(new ScrollBean(true,leftList.get(i))); //第一组数据
                for (int j = 0; j < 6; j++) {
                    rightList.add(new ScrollBean((new ScrollBean.ScrollItemBean("数据" + j,String.valueOf(i*j),imgUrl,leftList.get(i)))));
                }
            }
    
            for (int i = 0; i < rightList.size(); i++) {
                if(rightList.get(i).isHeader){
                    integerList.add(i); //将header添加到集合
                }
            }
        }
    
        //右侧数据布局
        private void initRightLayout(){
            gridLayoutManager = new GridLayoutManager(mContext,2);
            if(rightAdapter == null){
                rightAdapter = new RightAdapter(R.layout.item_right,R.layout.item_right_title,null);
                recyclerRight.setLayoutManager(gridLayoutManager);
                recyclerRight.addItemDecoration(new RecyclerView.ItemDecoration() {
                    @Override
                    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
                        super.getItemOffsets(outRect, view, parent, state);
                        outRect.set(dpToPx(mContext, getDimens(mContext, R.dimen.dp3)),0
                                , dpToPx(mContext, getDimens(mContext, R.dimen.dp3))
                                , dpToPx(mContext, getDimens(mContext, R.dimen.dp3)));
                    }
                });
                recyclerRight.setAdapter(rightAdapter);
            }else{
                rightAdapter.notifyDataSetChanged();
            }
            rightAdapter.setNewData(rightList);
            //设置右侧初始化标题
            if(rightList.get(first).isHeader){
                tvRightTitle.setText(rightList.get(first).header);
            }
            //滑动监听
            recyclerRight.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                    super.onScrollStateChanged(recyclerView, newState);
                    titleHeight = tvRightTitle.getHeight(); //获取右侧标题的高度
                }
    
                @Override
                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    if(rightList.get(first).isHeader){
                        View view = gridLayoutManager.findViewByPosition(first); //获取item的View
                        if(view != null){
                            //item顶部和父容器顶部距离大于等于标题的高度,则设置偏移量
                            if(view.getTop() >= titleHeight){
                                tvRightTitle.setY(view.getTop() - titleHeight);
                            }else{
                                tvRightTitle.setY(0); //不设置
                            }
                        }
                    }
                    /*
                    每次滑动之后,右侧列表中可见的第一个item的position肯定会改变,
                    并且右侧列表中可见的第一个item的position变换了之后,
                    才有可能改变右侧title的值,
                    所以这个方法内的逻辑在右侧可见的第一个item的position改变之后一定会执行
                    */
                    int firstPosition = gridLayoutManager.findFirstVisibleItemPosition();
                    if(first != firstPosition && firstPosition >= 0){
                        first = firstPosition; //给first赋值
                        tvRightTitle.setY(0); //不设置y轴的偏移量
                        //右侧第一个item是否是header,是则设置相应的值
                        if(rightList.get(first).isHeader){
                            tvRightTitle.setText(rightList.get(first).header);
                        }else{
                            tvRightTitle.setText(rightList.get(first).t.getType());
                        }
                    }
                    //遍历左边列表,列表对应的内容等于右边的title,则设置左侧对应item高亮
                    for (int i = 0; i < leftList.size(); i++) {
                        if(leftList.get(i).equals(tvRightTitle.getText().toString())){
                            leftAdapter.selectItemt(i);
                        }
                    }
                    /*
                    如果右边最后一个完全显示的item的position,
                    等于bean中最后一条数据的position(也就是右侧列表拉到底了),
                    则设置左侧列表最后一条item高亮
                    */
                    if(gridLayoutManager.findLastCompletelyVisibleItemPosition() == rightList.size() - 1){
                        leftAdapter.selectItemt(leftList.size() - 1);
                    }
                }
            });
        }
    
        //左侧数据布局
        private void initLeftLayout(){
            if(leftAdapter == null){
                leftAdapter = new LeftAdapter(R.layout.item_left,null);
                recyclerLeft.setLayoutManager(new LinearLayoutManager(mContext,RecyclerView.VERTICAL,false));
                recyclerLeft.addItemDecoration(new DividerItemDecoration(mContext,DividerItemDecoration.VERTICAL));
                recyclerLeft.setAdapter(leftAdapter);
            }else{
                leftAdapter.notifyDataSetChanged();
            }
            leftAdapter.setNewData(leftList);
            leftAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
                @Override
                public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
                    switch (view.getId()){
                        case R.id.item:
                            leftAdapter.selectItemt(position);
                            gridLayoutManager.scrollToPositionWithOffset(integerList.get(position),0);
                            break;
                            default:break;
                    }
                }
            });
        }
    
        private float getDimens(Context context,int id){
            DisplayMetrics dm = context.getResources().getDisplayMetrics();
            float px = context.getResources().getDimension(id);
            return px / dm.density;
        }
    
        private int dpToPx(Context context,float dp){
            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            return (int) ((dp * displayMetrics.density) + 0.5f);
        }
    }
    

    MainActivity布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        tools:context=".MainActivity">
    
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rec_left"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@color/white" />
    
        <View
            android:layout_width="0.5dp"
            android:layout_height="match_parent"
            android:background="#FAFAFA" />
    
        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3">
    
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/rec_right"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
    
            <TextView
                android:id="@+id/right_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#FAFAFA"
                android:gravity="center"
                android:padding="@dimen/dp_10"
                android:textColor="@color/black"
                android:textSize="@dimen/sp_14" />
        </FrameLayout>
    </LinearLayout>
    

    dimens.xml尺寸文件(此文件放在values文件夹中):

    <resources>
    
        <dimen name="sp8">8sp</dimen>
        <dimen name="sp9">9sp</dimen>
        <dimen name="sp10">10sp</dimen>
        <dimen name="sp11">11sp</dimen>
        <dimen name="sp12">12sp</dimen>
        <dimen name="sp13">13sp</dimen>
        <dimen name="sp14">14sp</dimen>
        <dimen name="sp15">15sp</dimen>
        <dimen name="sp16">16sp</dimen>
        <dimen name="sp17">17sp</dimen>
        <dimen name="sp18">18sp</dimen>
        <dimen name="sp19">19sp</dimen>
        <dimen name="sp20">20sp</dimen>
        <dimen name="sp21">21sp</dimen>
        <dimen name="sp22">22sp</dimen>
        <dimen name="sp23">23sp</dimen>
        <dimen name="sp24">24sp</dimen>
        <dimen name="sp25">25sp</dimen>
        <dimen name="sp26">26sp</dimen>
        <dimen name="sp27">27sp</dimen>
        <dimen name="sp28">28sp</dimen>
        <dimen name="sp29">29sp</dimen>
        <dimen name="sp30">30sp</dimen>
    
        <dimen name="dp1">1dp</dimen>
        <dimen name="dp2">2dp</dimen>
        <dimen name="dp3">3dp</dimen>
        <dimen name="dp4">4dp</dimen>
        <dimen name="dp5">5dp</dimen>
        <dimen name="dp6">6dp</dimen>
        <dimen name="dp7">7dp</dimen>
        <dimen name="dp8">8dp</dimen>
        <dimen name="dp9">9dp</dimen>
        <dimen name="dp10">10dp</dimen>
        <dimen name="dp11">11dp</dimen>
        <dimen name="dp12">12dp</dimen>
        <dimen name="dp13">13dp</dimen>
        <dimen name="dp14">14dp</dimen>
        <dimen name="dp15">15dp</dimen>
        <dimen name="dp16">16dp</dimen>
        <dimen name="dp17">17dp</dimen>
        <dimen name="dp18">18dp</dimen>
        <dimen name="dp19">19dp</dimen>
        <dimen name="dp20">20dp</dimen>
        <dimen name="dp21">21dp</dimen>
        <dimen name="dp22">22dp</dimen>
        <dimen name="dp23">23dp</dimen>
        <dimen name="dp24">24dp</dimen>
        <dimen name="dp25">25dp</dimen>
        <dimen name="dp26">26dp</dimen>
        <dimen name="dp27">27dp</dimen>
        <dimen name="dp28">28dp</dimen>
        <dimen name="dp29">29dp</dimen>
        <dimen name="dp30">30dp</dimen>
        <dimen name="dp31">31dp</dimen>
        <dimen name="dp32">32dp</dimen>
        <dimen name="dp33">33dp</dimen>
        <dimen name="dp34">34dp</dimen>
        <dimen name="dp35">35dp</dimen>
        <dimen name="dp36">36dp</dimen>
        <dimen name="dp37">37dp</dimen>
        <dimen name="dp38">38dp</dimen>
        <dimen name="dp39">39dp</dimen>
        <dimen name="dp40">40dp</dimen>
        <dimen name="dp41">41dp</dimen>
        <dimen name="dp42">42dp</dimen>
        <dimen name="dp43">43dp</dimen>
        <dimen name="dp44">44dp</dimen>
        <dimen name="dp45">45dp</dimen>
        <dimen name="dp46">46dp</dimen>
        <dimen name="dp47">47dp</dimen>
        <dimen name="dp48">48dp</dimen>
        <dimen name="dp49">49dp</dimen>
        <dimen name="dp50">50dp</dimen>
        <dimen name="dp51">51dp</dimen>
        <dimen name="dp52">52dp</dimen>
        <dimen name="dp53">53dp</dimen>
        <dimen name="dp54">54dp</dimen>
        <dimen name="dp55">55dp</dimen>
        <dimen name="dp56">56dp</dimen>
        <dimen name="dp57">57dp</dimen>
        <dimen name="dp58">58dp</dimen>
        <dimen name="dp59">59dp</dimen>
        <dimen name="dp60">60dp</dimen>
        <dimen name="dp61">61dp</dimen>
        <dimen name="dp62">62dp</dimen>
        <dimen name="dp63">63dp</dimen>
        <dimen name="dp64">64dp</dimen>
        <dimen name="dp65">65dp</dimen>
        <dimen name="dp66">66dp</dimen>
        <dimen name="dp67">67dp</dimen>
        <dimen name="dp68">68dp</dimen>
        <dimen name="dp69">69dp</dimen>
        <dimen name="dp70">70dp</dimen>
        <dimen name="dp71">71dp</dimen>
        <dimen name="dp72">72dp</dimen>
        <dimen name="dp73">73dp</dimen>
        <dimen name="dp74">74dp</dimen>
        <dimen name="dp75">75dp</dimen>
        <dimen name="dp76">76dp</dimen>
        <dimen name="dp77">77dp</dimen>
        <dimen name="dp78">78dp</dimen>
        <dimen name="dp79">79dp</dimen>
        <dimen name="dp80">80dp</dimen>
        <dimen name="dp81">81dp</dimen>
        <dimen name="dp82">82dp</dimen>
        <dimen name="dp83">83dp</dimen>
        <dimen name="dp84">84dp</dimen>
        <dimen name="dp85">85dp</dimen>
        <dimen name="dp86">86dp</dimen>
        <dimen name="dp87">87dp</dimen>
        <dimen name="dp88">88dp</dimen>
        <dimen name="dp89">89dp</dimen>
        <dimen name="dp90">90dp</dimen>
        <dimen name="dp91">91dp</dimen>
        <dimen name="dp92">92dp</dimen>
        <dimen name="dp93">93dp</dimen>
        <dimen name="dp94">94dp</dimen>
        <dimen name="dp95">95dp</dimen>
        <dimen name="dp96">96dp</dimen>
        <dimen name="dp97">97dp</dimen>
        <dimen name="dp98">98dp</dimen>
        <dimen name="dp99">99dp</dimen>
        <dimen name="dp100">100dp</dimen>
        <dimen name="dp101">101dp</dimen>
        <dimen name="dp102">102dp</dimen>
        <dimen name="dp103">103dp</dimen>
        <dimen name="dp104">104dp</dimen>
        <dimen name="dp105">105dp</dimen>
        <dimen name="dp106">106dp</dimen>
        <dimen name="dp107">107dp</dimen>
        <dimen name="dp108">108dp</dimen>
        <dimen name="dp109">109dp</dimen>
        <dimen name="dp110">110dp</dimen>
        <dimen name="dp111">111dp</dimen>
        <dimen name="dp112">112dp</dimen>
        <dimen name="dp113">113dp</dimen>
        <dimen name="dp114">114dp</dimen>
        <dimen name="dp115">115dp</dimen>
        <dimen name="dp116">116dp</dimen>
        <dimen name="dp117">117dp</dimen>
        <dimen name="dp118">118dp</dimen>
        <dimen name="dp119">119dp</dimen>
        <dimen name="dp120">120dp</dimen>
        <dimen name="dp121">121dp</dimen>
        <dimen name="dp122">122dp</dimen>
        <dimen name="dp123">123dp</dimen>
        <dimen name="dp124">124dp</dimen>
        <dimen name="dp125">125dp</dimen>
        <dimen name="dp126">126dp</dimen>
        <dimen name="dp127">127dp</dimen>
        <dimen name="dp128">128dp</dimen>
        <dimen name="dp129">129dp</dimen>
        <dimen name="dp130">130dp</dimen>
        <dimen name="dp131">131dp</dimen>
        <dimen name="dp132">132dp</dimen>
        <dimen name="dp133">133dp</dimen>
        <dimen name="dp134">134dp</dimen>
        <dimen name="dp135">135dp</dimen>
        <dimen name="dp136">136dp</dimen>
        <dimen name="dp137">137dp</dimen>
        <dimen name="dp138">138dp</dimen>
        <dimen name="dp139">139dp</dimen>
        <dimen name="dp140">140dp</dimen>
        <dimen name="dp141">141dp</dimen>
        <dimen name="dp142">142dp</dimen>
        <dimen name="dp143">143dp</dimen>
        <dimen name="dp144">144dp</dimen>
        <dimen name="dp145">145dp</dimen>
        <dimen name="dp146">146dp</dimen>
        <dimen name="dp147">147dp</dimen>
        <dimen name="dp148">148dp</dimen>
        <dimen name="dp149">149dp</dimen>
        <dimen name="dp150">150dp</dimen>
        <dimen name="dp151">151dp</dimen>
        <dimen name="dp152">152dp</dimen>
        <dimen name="dp153">153dp</dimen>
        <dimen name="dp154">154dp</dimen>
        <dimen name="dp155">155dp</dimen>
        <dimen name="dp156">156dp</dimen>
        <dimen name="dp157">157dp</dimen>
        <dimen name="dp158">158dp</dimen>
        <dimen name="dp159">159dp</dimen>
        <dimen name="dp160">160dp</dimen>
        <dimen name="dp161">161dp</dimen>
        <dimen name="dp162">162dp</dimen>
        <dimen name="dp163">163dp</dimen>
        <dimen name="dp164">164dp</dimen>
        <dimen name="dp165">165dp</dimen>
        <dimen name="dp166">166dp</dimen>
        <dimen name="dp167">167dp</dimen>
        <dimen name="dp168">168dp</dimen>
        <dimen name="dp169">169dp</dimen>
        <dimen name="dp170">170dp</dimen>
        <dimen name="dp171">171dp</dimen>
        <dimen name="dp172">172dp</dimen>
        <dimen name="dp173">173dp</dimen>
        <dimen name="dp174">174dp</dimen>
        <dimen name="dp175">175dp</dimen>
        <dimen name="dp176">176dp</dimen>
        <dimen name="dp177">177dp</dimen>
        <dimen name="dp178">178dp</dimen>
        <dimen name="dp179">179dp</dimen>
        <dimen name="dp180">180dp</dimen>
        <dimen name="dp181">181dp</dimen>
        <dimen name="dp182">182dp</dimen>
        <dimen name="dp183">183dp</dimen>
        <dimen name="dp184">184dp</dimen>
        <dimen name="dp185">185dp</dimen>
        <dimen name="dp186">186dp</dimen>
        <dimen name="dp187">187dp</dimen>
        <dimen name="dp188">188dp</dimen>
        <dimen name="dp189">189dp</dimen>
        <dimen name="dp190">190dp</dimen>
        <dimen name="dp191">191dp</dimen>
        <dimen name="dp192">192dp</dimen>
        <dimen name="dp193">193dp</dimen>
        <dimen name="dp194">194dp</dimen>
        <dimen name="dp195">195dp</dimen>
        <dimen name="dp196">196dp</dimen>
        <dimen name="dp197">197dp</dimen>
        <dimen name="dp198">198dp</dimen>
        <dimen name="dp199">199dp</dimen>
        <dimen name="dp200">200dp</dimen>
        <dimen name="dp201">201dp</dimen>
        <dimen name="dp202">202dp</dimen>
        <dimen name="dp203">203dp</dimen>
        <dimen name="dp204">204dp</dimen>
        <dimen name="dp205">205dp</dimen>
        <dimen name="dp206">206dp</dimen>
        <dimen name="dp207">207dp</dimen>
        <dimen name="dp208">208dp</dimen>
        <dimen name="dp209">209dp</dimen>
        <dimen name="dp210">210dp</dimen>
        <dimen name="dp211">211dp</dimen>
        <dimen name="dp212">212dp</dimen>
        <dimen name="dp213">213dp</dimen>
        <dimen name="dp214">214dp</dimen>
        <dimen name="dp215">215dp</dimen>
        <dimen name="dp216">216dp</dimen>
        <dimen name="dp217">217dp</dimen>
        <dimen name="dp218">218dp</dimen>
        <dimen name="dp219">219dp</dimen>
        <dimen name="dp220">220dp</dimen>
        <dimen name="dp221">221dp</dimen>
        <dimen name="dp222">222dp</dimen>
        <dimen name="dp223">223dp</dimen>
        <dimen name="dp224">224dp</dimen>
        <dimen name="dp225">225dp</dimen>
        <dimen name="dp226">226dp</dimen>
        <dimen name="dp227">227dp</dimen>
        <dimen name="dp228">228dp</dimen>
        <dimen name="dp229">229dp</dimen>
        <dimen name="dp230">230dp</dimen>
        <dimen name="dp231">231dp</dimen>
        <dimen name="dp232">232dp</dimen>
        <dimen name="dp233">233dp</dimen>
        <dimen name="dp234">234dp</dimen>
        <dimen name="dp235">235dp</dimen>
        <dimen name="dp236">236dp</dimen>
        <dimen name="dp237">237dp</dimen>
        <dimen name="dp238">238dp</dimen>
        <dimen name="dp239">239dp</dimen>
        <dimen name="dp240">240dp</dimen>
        <dimen name="dp241">241dp</dimen>
        <dimen name="dp242">242dp</dimen>
        <dimen name="dp243">243dp</dimen>
        <dimen name="dp244">244dp</dimen>
        <dimen name="dp245">245dp</dimen>
        <dimen name="dp246">246dp</dimen>
        <dimen name="dp247">247dp</dimen>
        <dimen name="dp248">248dp</dimen>
        <dimen name="dp249">249dp</dimen>
        <dimen name="dp250">250dp</dimen>
        <dimen name="dp251">251dp</dimen>
        <dimen name="dp252">252dp</dimen>
        <dimen name="dp253">253dp</dimen>
        <dimen name="dp254">254dp</dimen>
        <dimen name="dp255">255dp</dimen>
        <dimen name="dp256">256dp</dimen>
        <dimen name="dp257">257dp</dimen>
        <dimen name="dp258">258dp</dimen>
        <dimen name="dp259">259dp</dimen>
        <dimen name="dp260">260dp</dimen>
        <dimen name="dp261">261dp</dimen>
        <dimen name="dp262">262dp</dimen>
        <dimen name="dp263">263dp</dimen>
        <dimen name="dp264">264dp</dimen>
        <dimen name="dp265">265dp</dimen>
        <dimen name="dp266">266dp</dimen>
        <dimen name="dp267">267dp</dimen>
        <dimen name="dp268">268dp</dimen>
        <dimen name="dp269">269dp</dimen>
        <dimen name="dp270">270dp</dimen>
        <dimen name="dp271">271dp</dimen>
        <dimen name="dp272">272dp</dimen>
        <dimen name="dp273">273dp</dimen>
        <dimen name="dp274">274dp</dimen>
        <dimen name="dp275">275dp</dimen>
        <dimen name="dp276">276dp</dimen>
        <dimen name="dp277">277dp</dimen>
        <dimen name="dp278">278dp</dimen>
        <dimen name="dp279">279dp</dimen>
        <dimen name="dp280">280dp</dimen>
        <dimen name="dp281">281dp</dimen>
        <dimen name="dp282">282dp</dimen>
        <dimen name="dp283">283dp</dimen>
        <dimen name="dp284">284dp</dimen>
        <dimen name="dp285">285dp</dimen>
        <dimen name="dp286">286dp</dimen>
        <dimen name="dp287">287dp</dimen>
        <dimen name="dp288">288dp</dimen>
        <dimen name="dp289">289dp</dimen>
        <dimen name="dp290">290dp</dimen>
        <dimen name="dp291">291dp</dimen>
        <dimen name="dp292">292dp</dimen>
        <dimen name="dp293">293dp</dimen>
        <dimen name="dp294">294dp</dimen>
        <dimen name="dp295">295dp</dimen>
        <dimen name="dp296">296dp</dimen>
        <dimen name="dp297">297dp</dimen>
        <dimen name="dp298">298dp</dimen>
        <dimen name="dp299">299dp</dimen>
        <dimen name="dp300">300dp</dimen>
    
        <!--分割线 start-->
        <dimen name="divider">0.5dp</dimen>
    </resources>
    

    left_item_check_bg.xml左侧选中的背景文件:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid android:color="#008577" />
        <corners android:radius="3dp"/>
        <stroke android:color="#008577" android:width="1dp"/>
    </shape>
    

    item_right_title.xml分组标题文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:background="#FAFAFA"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/right_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="标题"
            android:gravity="center"
            android:textColor="#555"
            android:textSize="15sp"
            android:padding="2dp"/>
    </LinearLayout>
    

    ScrollBean实体类:

    package com.example.recycleview2.entity;
    
    import com.chad.library.adapter.base.entity.SectionEntity;
    
    public class ScrollBean extends SectionEntity<ScrollBean.ScrollItemBean> {
        public ScrollBean(boolean isHeader,String header){
            super(isHeader,header);
        }
    
        public ScrollBean(ScrollItemBean bean){
            super(bean);
        }
    
        public static class ScrollItemBean{
            private String name;
            private String price;
            private String img;
            private String type;
    
            public ScrollItemBean(String name,String price,String img,String type){
                this.name = name;
                this.price = price;
                this.img = img;
                this.type = type;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public String getPrice() {
                return price;
            }
    
            public void setPrice(String price) {
                this.price = price;
            }
    
            public String getImg() {
                return img;
            }
    
            public void setImg(String img) {
                this.img = img;
            }
    
            public String getType() {
                return type;
            }
    
            public void setType(String type) {
                this.type = type;
            }
        }
    }
    

    在AndroidManifest.xml中加入权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    
  • 相关阅读:
    Python 爬虫 解决escape问题
    python 爬虫 重复下载 二次请求
    iOS开发-消息通知机制(NSNotification和NSNotificationCenter)
    iOS开发-UITableView自定义Cell
    iOS开发-自定义UIAlterView(iOS 7)
    iOS开发-CocoaPods实战
    iOS开发-UICollectionView实现瀑布流
    iOS开发-UITabBarController详解
    iOS 开发-Certificate、App ID和Provisioning Profile之间的关系
    iOS开发-View中frame和bounds区别
  • 原文地址:https://www.cnblogs.com/Mr-Deng/p/11447629.html
Copyright © 2020-2023  润新知