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);
}
}
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>