万能适配器和多布局

万能适配器四大步骤:初始化控件,准备数据源,定义适配器,设置适配器

 适配器

多布局:

private RecyclerView recyclerView;
MyAbsert2 myAbsert2;
private List<Base.DataBean>list= new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    //初始化控件
    recyclerView=findViewById(R.id.rv2);
    //准备数据源
    OkGo.<String>get("http://43.143.146.165:7777/foods/getFoods?pageSize=10&currentPage=1").execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
            Base base = new Gson().fromJson(s, Base.class);
            List<Base.DataBean> data = base.getData();
            list.addAll(data);
            for (int i = 0; i < list.size(); i++) {
                int type=(i%2==0)?0:1;
                list.get(i).setType(type);
            }
            myAbsert2.notifyDataSetChanged();
        }
    });
    //定义适配器
    myAbsert2=new MyAbsert2(list,this);
    //设置适配器
    recyclerView.setAdapter(myAbsert2);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
}

多布局适配器:

 布局联动

private RecyclerView rv3;

private MyAbsert3 myAbsert3;
private MyAbsert4 myAbsert4;
private List<Base3.DataBean.DataBean1> list = new ArrayList<>();
private RecyclerView rv4;
private List<Base4.DataBean> list4=new ArrayList<>();
private int id=14;
private int page=1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);
    initView();
    OkGo.<String>get("http://43.143.146.165:7777/goods/category").execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
            Base3 base3 = new Gson().fromJson(s, Base3.class);
            List<Base3.DataBean> data = base3.getData();
            for (int i = 0; i < data.size(); i++) {
                List<Base3.DataBean.DataBean1> data1 = data.get(i).getData();
                list.addAll(data1);
            }
            myAbsert3.notifyDataSetChanged();
        }
    });
    myAbsert3 = new MyAbsert3(R.layout.c, list, this);
    rv3.setAdapter(myAbsert3);
    rv3.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL));

    inint();

    myAbsert3.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
            id=list.get(position).getId();
            page=1;
            list4.clear();
            inint();
        }
    });

}

private void inint() {
    OkGo.<String>get("http://43.143.146.165:7777/goods/info?category_id="+id+"&currentPage="+page+"&pageSize=10").execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
            Gson gson = new Gson();
            Base4 base4 = gson.fromJson(s, Base4.class);
            List<Base4.DataBean> data = base4.getData();
            list4.addAll(data);
            myAbsert4.notifyDataSetChanged();
        }
    });
    myAbsert4=new MyAbsert4(R.layout.d,list4,this);
    rv4.setAdapter(myAbsert4);
    rv4.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
}


private void initView() {
    rv3 = (RecyclerView) findViewById(R.id.rv3);
    rv4 = (RecyclerView) findViewById(R.id.rv4);
}

各种小功能
private RecyclerView rv1;

private List<Base.DataBean>list=new ArrayList<>();

int path=0;
Banner banner;
MyAbsert1 myAbsert1;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    banner=findViewById(R.id.ba);
    OkGo.<String>get("http://43.143.146.165:7777/foods/getFoods?pageSize=10&currentPage=1").execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
            Base base = new Gson().fromJson(s, Base.class);
            List<Base.DataBean> data = base.getData();
            if (data.size()==0||data==null){
                Toast.makeText(MainActivity.this, "没有更多了", Toast.LENGTH_SHORT).show();
            }else {
                list.addAll(data);
                myAbsert1.notifyDataSetChanged();
            }
        }
    });
    //定义适配器
    myAbsert1 = new MyAbsert1(R.layout.aaa, list, this);
    //
    rv1.setAdapter(myAbsert1);
    rv1.setLayoutManager(new LinearLayoutManager(this));
    //设置分割线
    DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
    dividerItemDecoration.setDrawable(getResources().getDrawable(R.drawable.sp));
    rv1.addItemDecoration(dividerItemDecoration);
    //设置动画
    DefaultItemAnimator defaultItemAnimator = new DefaultItemAnimator();
    defaultItemAnimator.setRemoveDuration(2000);
    defaultItemAnimator.setAddDuration(2000);
    defaultItemAnimator.setChangeDuration(2000);
    rv1.setItemAnimator(defaultItemAnimator);
    myAbsert1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
            list.remove(position);
            myAbsert1.notifyItemRemoved(position);
        }
    });
    //左右滑动删除
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
        @Override
        public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
            int x= ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT;
            return makeMovementFlags(0,x);
        }

        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return true;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
           int post=viewHolder.getPosition();
           list.remove(post);
           myAbsert1.notifyItemRemoved(post);
        }
    });
    itemTouchHelper.attachToRecyclerView(rv1);
    //子控件点击事件
    //环境复杂度
    myAbsert1.addChildClickViewIds(R.id.tv);
    myAbsert1.addChildClickViewIds(R.id.img);
    myAbsert1.setOnItemChildClickListener(new OnItemChildClickListener() {
        @Override
        public void onItemChildClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
            int id=view.getId();
           if (id== R.id.img){
               Toast.makeText(MainActivity.this, "点击图片", Toast.LENGTH_SHORT).show();
           }else {
               Toast.makeText(MainActivity.this, "点击了文字", Toast.LENGTH_SHORT).show();
           }
        }
    });
    //刷新页面
    View view = LayoutInflater.from(this).inflate(R.layout.item, null);
    banner=view.findViewById(R.id.ba);
    myAbsert1.addHeaderView(view);
    OkGo.<String>get("http://43.143.146.165:7777/foods/getFoods?pageSize=10&currentPage=1").execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
            Base base = new Gson().fromJson(s, Base.class);
            List<Base.DataBean> data = base.getData();
            List<String>stringList=new ArrayList<>();
            for (int i = 0; i < data.size(); i++) {
                stringList.add(data.get(i).getPic());
            }
            banner.setImages(stringList);
            banner.setImageLoader(new ImageLoader() {
                @Override
                public void displayImage(Context context, Object path, ImageView imageView) {
                    Glide.with(context).load(path).into(imageView);
                }
            });
            banner.start();
        }
    });
}


private void initView() {
    rv1 = (RecyclerView) findViewById(R.id.rv1);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值