BaseRecyclerViewAdapterHelper的基本使用



MainActivity.java
package com.zhoujian.basequickadapterdemo.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.google.gson.Gson;
import com.zhoujian.basequickadapterdemo.R;
import com.zhoujian.basequickadapterdemo.adapter.CityAdapter;
import com.zhoujian.basequickadapterdemo.adapter.CityMutiItemAdapter;
import com.zhoujian.basequickadapterdemo.bean.Citys;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initDatas();
    }

    private void initView() {
        mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

    private void initDatas() {
        String json = "{\n" +
                "    \"citys\": [\n" +
                "        {\n" +
                "            \"name\": \"合肥\",\n" +
                "            \"type\": \"1\",\n" +
                "            \"postal_code\": \"230000\",\n" +
                "            \"university\": \"中国科技大学\",\n" +
                "            \"url\": \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548068315752&di=af82129e032df753448b5cb7d1d80808&imgtype=0&src=http%3A%2F%2Fimages.wenming.cn%2Fweb_wenming%2Fdfcz%2Fah%2F201707%2FW020170707336051437106.jpg\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"name\": \"芜湖\",\n" +
                "             \"type\": \"2\",\n" +
                "            \"postal_code\": \"241000\",\n" +
                "            \"university\": \"安徽师范大学\",\n" +
                "            \"url\": \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548068382284&di=06aefdb3c229dfc4c44230d2ad5c6df2&imgtype=0&src=http%3A%2F%2Fa3.att.hudong.com%2F67%2F88%2F01300542892848141666884811324_s.jpg\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"name\": \"蚌埠\",\n" +
                "            \"type\": \"3\",\n" +
                "            \"postal_code\": \"233000\",\n" +
                "            \"university\": \"安徽财经大学\",\n" +
                "            \"url\": \"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2147101197,1661719198&fm=26&gp=0.jpg\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";


        Citys citys = new Gson().fromJson(json, Citys.class);
        List<Citys.CitysBean> citysBeans = citys.getCitys();

        BaseQuickAdapter cityAdapter = new CityAdapter(R.layout.city_item_view, citysBeans);
        mRecyclerView.setAdapter(cityAdapter);

//        for (Citys.CitysBean citysBean : citysBeans) {
//            citysBean.setItemType(Integer.parseInt(citysBean.getType()));
//        }
//        CityMutiItemAdapter cityMutiItemAdapter = new CityMutiItemAdapter(citysBeans);
//        mRecyclerView.setAdapter(cityMutiItemAdapter);
    }
}

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F0F0F0"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

 

CityAdapter.java

 

package com.zhoujian.basequickadapterdemo.adapter;

import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.zhoujian.basequickadapterdemo.R;
import com.zhoujian.basequickadapterdemo.bean.Citys.CitysBean;

import java.util.List;

public class CityAdapter extends BaseQuickAdapter<CitysBean, BaseViewHolder> {

    public CityAdapter(int layoutResId, List<CitysBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, CitysBean item) {
        helper.setText(R.id.city, item.getName());
        helper.setText(R.id.code, item.getPostal_code());
        helper.setText(R.id.university, item.getUniversity());
        ImageView imageView = helper.getView(R.id.image);
        Glide.with(mContext).load(item.getUrl()).into(imageView);
    }
}

 

BaseRecyclerViewAdapterHelper的基本使用

 

 city_item_view.xml

<?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">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@drawable/ic_launcher_background"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:text="合肥" />

    <TextView
        android:id="@+id/code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:text="234000" />


    <TextView
        android:id="@+id/university"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:text="安徽财经大学" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_10"
        android:layout_marginTop="@dimen/dp_10"
        android:background="#ffffff" />
</LinearLayout>

 

 

 

BaseMultiItemQuickAdapter的使用

MainActivity.java

package com.zhoujian.basequickadapterdemo.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.google.gson.Gson;
import com.zhoujian.basequickadapterdemo.R;
import com.zhoujian.basequickadapterdemo.adapter.CityAdapter;
import com.zhoujian.basequickadapterdemo.adapter.CityMutiItemAdapter;
import com.zhoujian.basequickadapterdemo.bean.Citys;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initDatas();
    }

    private void initView() {
        mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

    private void initDatas() {
        String json = "{\n" +
                "    \"citys\": [\n" +
                "        {\n" +
                "            \"name\": \"合肥\",\n" +
                "            \"type\": \"1\",\n" +
                "            \"postal_code\": \"230000\",\n" +
                "            \"university\": \"中国科技大学\",\n" +
                "            \"url\": \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548068315752&di=af82129e032df753448b5cb7d1d80808&imgtype=0&src=http%3A%2F%2Fimages.wenming.cn%2Fweb_wenming%2Fdfcz%2Fah%2F201707%2FW020170707336051437106.jpg\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"name\": \"芜湖\",\n" +
                "             \"type\": \"2\",\n" +
                "            \"postal_code\": \"241000\",\n" +
                "            \"university\": \"安徽师范大学\",\n" +
                "            \"url\": \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548068382284&di=06aefdb3c229dfc4c44230d2ad5c6df2&imgtype=0&src=http%3A%2F%2Fa3.att.hudong.com%2F67%2F88%2F01300542892848141666884811324_s.jpg\"\n" +
                "        },\n" +
                "        {\n" +
                "            \"name\": \"蚌埠\",\n" +
                "            \"type\": \"3\",\n" +
                "            \"postal_code\": \"233000\",\n" +
                "            \"university\": \"安徽财经大学\",\n" +
                "            \"url\": \"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2147101197,1661719198&fm=26&gp=0.jpg\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";


        Citys citys = new Gson().fromJson(json, Citys.class);
        List<Citys.CitysBean> citysBeans = citys.getCitys();

//        BaseQuickAdapter cityAdapter = new CityAdapter(R.layout.city_item_view, citysBeans);
//        mRecyclerView.setAdapter(cityAdapter);

        for (Citys.CitysBean citysBean : citysBeans) {
            citysBean.setItemType(Integer.parseInt(citysBean.getType()));
        }
        CityMutiItemAdapter cityMutiItemAdapter = new CityMutiItemAdapter(citysBeans);
        mRecyclerView.setAdapter(cityMutiItemAdapter);
    }
}

 

Citys.java
package com.zhoujian.basequickadapterdemo.bean;

import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.zhoujian.basequickadapterdemo.adapter.CityCodeType;

import java.util.List;

public class Citys {
    private List<CitysBean> citys;

    public List<CitysBean> getCitys() {
        return citys;
    }

    public void setCitys(List<CitysBean> citys) {
        this.citys = citys;
    }

    public static class CitysBean implements MultiItemEntity {
        /**
         * name : 合肥
         * postal_code : 230000
         * university : 中国科技大学
         * url : https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548068315752&di=af82129e032df753448b5cb7d1d80808&imgtype=0&src=http%3A%2F%2Fimages.wenming.cn%2Fweb_wenming%2Fdfcz%2Fah%2F201707%2FW020170707336051437106.jpg
         */

        private String name;
        private String postal_code;
        private String university;
        private String url;
        private String type;


        int itemType = CityCodeType.THIRED_TYPE;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getPostal_code() {
            return postal_code;
        }

        public void setPostal_code(String postal_code) {
            this.postal_code = postal_code;
        }

        public String getUniversity() {
            return university;
        }

        public void setUniversity(String university) {
            this.university = university;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        @Override
        public int getItemType() {
            return itemType;
        }

        public void setItemType(int itemType) {
            this.itemType = itemType;
        }

    }

    @Override
    public String toString() {
        return "Citys{" +
                "citys=" + citys +
                '}';
    }


}

 

CityMutiItemAdapter.java
package com.zhoujian.basequickadapterdemo.adapter;

import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.zhoujian.basequickadapterdemo.R;
import com.zhoujian.basequickadapterdemo.bean.Citys.CitysBean;

import java.util.List;

public class CityMutiItemAdapter extends BaseMultiItemQuickAdapter<CitysBean, BaseViewHolder> {

    public CityMutiItemAdapter(List<CitysBean> data) {
        super(data);
        addItemType(CityCodeType.FIRST_TYPE, R.layout.city_first_item_view);
        addItemType(CityCodeType.SECOND_TYPE, R.layout.city_second_item_view);
        addItemType(CityCodeType.THIRED_TYPE, R.layout.city_thired_item_view);
    }

    @Override
    protected void convert(BaseViewHolder helper, CitysBean item) {

        switch (item.getItemType()) {
            case CityCodeType.FIRST_TYPE:
            case CityCodeType.SECOND_TYPE:
            case CityCodeType.THIRED_TYPE:
                helper.setText(R.id.city, item.getName());
                helper.setText(R.id.code, item.getPostal_code());
                helper.setText(R.id.university, item.getUniversity());
                ImageView imageView = helper.getView(R.id.image);
                Glide.with(mContext).load(item.getUrl()).into(imageView);

                break;

            default:
                break;
        }
    }
}

 

city_first_item_view.xml

 

<?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">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@drawable/ic_launcher_background"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/city"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:text="合肥" />

    <TextView
        android:id="@+id/code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:text="234000" />


    <TextView
        android:id="@+id/university"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:text="安徽财经大学" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_10"
        android:layout_marginTop="@dimen/dp_10"
        android:background="#ffffff" />
</LinearLayout>

 

 

city_second_item_view.xml

<?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">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@drawable/ic_launcher_background"
        android:scaleType="centerCrop" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:gravity="center_horizontal"
        android:orientation="horizontal">


        <TextView
            android:id="@+id/university"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="安徽财经大学" />

        <TextView
            android:id="@+id/code"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dp_10"
            android:text="234000" />


        <TextView
            android:id="@+id/city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dp_10"
            android:text="合肥" />


    </LinearLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_10"
        android:layout_marginTop="@dimen/dp_10"
        android:background="#ffffff" />

</LinearLayout>

 

city_thired_item_view.xml

 

<?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">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@drawable/ic_launcher_background"
        android:scaleType="centerCrop" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/dp_10"
        android:gravity="center_horizontal"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"


            android:text="合肥" />

        <TextView
            android:id="@+id/code"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dp_10"
            android:text="234000" />


        <TextView
            android:id="@+id/university"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dp_10"
            android:text="安徽财经大学" />


    </LinearLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_10"
        android:layout_marginTop="@dimen/dp_10"
        android:background="#ffffff" />

</LinearLayout>

 

 

 

 

BaseRecyclerViewAdapterHelper的基本使用