万能适配器

万能适配器

适配器

加入依赖
----------------万能适配器
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;
                }
            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值