万能适配器和多布局
万能适配器
适配器
加入依赖
----------------万能适配器
implementation ‘com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22’//万能适配器
implementation ‘com.android.support:recyclerview-v7:28.0.0’//recyclerview
项目gradle:
allprojects {
repositories {
google()
jcenter()
maven { url “https://jitpack.io” }
}
}
/泛型一:实体类 泛型二:BaseViewHolder
public class BaseAdapter extends BaseQuickAdapter<Food.DataBean, BaseViewHolder> {
public BaseAdapter(int layoutResId, @Nullable List<Food.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, Food.DataBean item) {
helper.setText(R.id.tit,item.getTitle()+"");
ImageView img = helper.getView(R.id.img);
Glide.with(mContext).load(item.getPic())
.transform(new CenterCrop(),new RoundedCorners(20))
.into(img);
//添加单击
helper.addOnClickListener(R.id.img);
helper.addOnClickListener(R.id.tit);
}
}
在MainActivity中使用
public class MainActivity extends AppCompatActivity {
private RecyclerView re;
private BaseAdapter baseAdapter;
private List<Food.DataBean> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
re = (RecyclerView) findViewById(R.id.re);
baseAdapter=new BaseAdapter(R.layout.lv_layout,list);
re.setAdapter(baseAdapter);
//网格布局:两列
re.setLayoutManager(new GridLayoutManager(this,2));
OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Gson gson = new Gson();
Food food = gson.fromJson(body, Food.class);
List<Food.DataBean> data = food.getData();
list.addAll(data);
baseAdapter.notifyDataSetChanged();
}
});
//万能适配器中的控件的单击事件
baseAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Toast.makeText(MainActivity.this, "点击"+position, Toast.LENGTH_SHORT).show();
}
});
baseAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
if (view.getId()==R.id.img){
Toast.makeText(MainActivity.this, "图片"+position, Toast.LENGTH_SHORT).show();
}else if (view.getId()==R.id.tit){
Toast.makeText(MainActivity.this, "文字"+position, Toast.LENGTH_SHORT).show();
}
}
});
}
}
多布局
==重点在在实体类中实现MultiItemEntity接口 ==
适配器
public class MyAdapter extends BaseMultiItemQuickAdapter<Goods.DataBean.ItemsBean.ListBean, BaseViewHolder> {
/**
* Same as QuickAdapter#QuickAdapter(Context,int) but with
* some initialization data.
*
* @param data A new list is created out of this one to avoid mutable list
*/
public MyAdapter(List<Goods.DataBean.ItemsBean.ListBean> data) {
super(data);
//根据type返回的值进行添加布局
addItemType(1, R.layout.layout_left);
addItemType(2, R.layout.layout_right);
}
@Override
protected void convert(BaseViewHolder helper, Goods.DataBean.ItemsBean.ListBean item) {
switch (helper.getItemViewType()){
case 1:
Glide.with(mContext).load(item.getImage()).transform(new CenterCrop(),new RoundedCorners(30)).into((ImageView) helper.getView(R.id.img));
helper.setText(R.id.tit,item.getTitle()+"");
helper.setText(R.id.juan,item.getCouponValue()+"");
helper.setText(R.id.price,item.getPrice()+"");
helper.addOnClickListener(R.id.tit);
helper.addOnClickListener(R.id.img);
helper.addOnClickListener(R.id.juan);
helper.addOnClickListener(R.id.price);
break;
case 2:
Glide.with(mContext).load(item.getImage()).transform(new CenterCrop(),new RoundedCorners(30)).into((ImageView) helper.getView(R.id.img_right));
helper.addOnClickListener(R.id.img_right);
break;
}
}
}
在Activity中使用
public class MainActivity extends AppCompatActivity {
private RecyclerView re;
private List<Goods.DataBean.ItemsBean.ListBean> listBeans=new ArrayList<>();
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
re = (RecyclerView) findViewById(R.id.re);
myAdapter=new MyAdapter(listBeans);
re.setAdapter(myAdapter);
re.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
OkGo.<String>get("http://quan.lukou.com/api/tab/1?start=0&forceRefresh=true")
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Goods goods = new Gson().fromJson(body, Goods.class);
List<Goods.DataBean.ItemsBean.ListBean> list = goods.getData().getItems().getList();
listBeans.addAll(list);
myAdapter.notifyDataSetChanged();
}
});
myAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
switch (view.getId()){
case R.id.img_right:
Toast.makeText(MainActivity.this, "地址"+listBeans.get(position).getImage(), Toast.LENGTH_SHORT).show();
break;
case R.id.img:
Toast.makeText(MainActivity.this, "地址"+listBeans.get(position).getImage(), Toast.LENGTH_SHORT).show();
break;
case R.id.juan:
Toast.makeText(MainActivity.this, ""+listBeans.get(position).getCouponValue(), Toast.LENGTH_SHORT).show();
break;
case R.id.tit:
Toast.makeText(MainActivity.this, ""+listBeans.get(position).getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.price:
Toast.makeText(MainActivity.this, ""+listBeans.get(position).getPrice(), Toast.LENGTH_SHORT).show();
break;
}
}
});
}
}