RecyclerView实现京东分类联动效果

这个难点在于接口回调,以及联动效果.对于数据的一个处理

Adapter–ParentAdapter

public class ParentAdapter extends BaseQuickAdapter<ParentBean.DataBean, BaseViewHolder> {

    public ParentAdapter(int layoutResId, @Nullable List<ParentBean.DataBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, final ParentBean.DataBean item) {
        helper.setText(R.id.textone, item.getName());
        helper.addOnClickListener(R.id.textone);
        //条目点击
        helper.setOnClickListener(R.id.textone, new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //自定义接口回调   传索引
                mItemClick.onItem(item.getCid());
            }
        });
    }

    //自定义接口
    private ItemClick mItemClick;

    //接口
    public interface ItemClick {
        void onItem(int data);
    }

    //设置外部访问的方法
    public void setitemClick(ItemClick mItemClick) {
        this.mItemClick = mItemClick;
    }
}

Adapter–ChildNameAdapter 嵌套子适配器

public class ChildAdapter extends BaseQuickAdapter<ChildBean.DataBean, BaseViewHolder> {
    private TextView mTextView2;
    private RecyclerView mRecyclerView;

    public ChildAdapter(int layoutResId, @Nullable List<ChildBean.DataBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, ChildBean.DataBean item) {
        helper.setText(R.id.twotext, item.getList().get(0).getName());

        mRecyclerView = helper.itemView.findViewById(R.id.recythree);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 3);
        mRecyclerView.setLayoutManager(gridLayoutManager);
        ChildItemAdapter childItemAdapter = new ChildItemAdapter(R.layout.itemlayout, item
                .getList());
        mRecyclerView.setAdapter(childItemAdapter);

    }
}

Adapter–ChildAdapter

public class ChildItemAdapter extends BaseQuickAdapter<ChildBean.DataBean.ListBean,
        BaseViewHolder> {

    public ChildItemAdapter(int layoutResId, @Nullable List<ChildBean.DataBean.ListBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, ChildBean.DataBean.ListBean item) {
        helper.setText(R.id.textthree,item.getName() );
        String images = item.getIcon();
        Log.d(TAG, images + "+++images");
        String[] split = images.split("\\|");
        if (split.length > 0) {
            Uri uri = Uri.parse(split[0]);
            ((ImageView) helper.getView(R.id.imagethree)).setImageURI(Uri.parse(split[0]));
            Log.d(TAG, split[0] + "++++split[0]");
        }
    }
}

Activity

public class MainActivity extends AppCompatActivity implements DataCall {

    @BindView(R.id.recyone)
    RecyclerView recyone;
    @BindView(R.id.recytwo)
    RecyclerView recytwo;
    private ParentPresenter parentPresenter;
    private ParentAdapter parentAdapter;
    private ChildPresenter childPresenter;
    private int cidData = 1;
    private List<ParentBean.DataBean> dataBeans;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        //实例化P层
        parentPresenter = new ParentPresenter(this);
        parentPresenter.showParent();
        childPresenter = new ChildPresenter(this);
        childPresenter.showParent(cidData);


    }

    @Override
    public void showParent(ParentBean parentBean) {
        dataBeans = parentBean.getData();
        //瀑布流布局
        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(1,
                StaggeredGridLayoutManager.VERTICAL);
        recyone.setLayoutManager(staggeredGridLayoutManager);
        //设置适配器
        parentAdapter = new ParentAdapter(R.layout.parentitem, dataBeans);
        recyone.setAdapter(parentAdapter);
        parentAdapter.setitemClick(new ParentAdapter.ItemClick() {
            @Override
            public void onItem(int data) {
                childPresenter.showParent(data);
            }
        });
    }

    @Override
    public void showChild(ChildBean childBean) {
        //设置布局
        GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 1);
        recytwo.setLayoutManager(gridLayoutManager);
        //设置动态添加数据
        List<ChildBean.DataBean> childBeanData = childBean.getData();
        ChildAdapter childAdapter = new ChildAdapter(R.layout.childview, childBeanData);
        //设置适配器
        recytwo.setAdapter(childAdapter);
    }

    @Override
    public void showError(String error) {

    }

    @Override
    public Context CONTEXT() {
        return this;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        parentPresenter.onDestroy();
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值