Dialog中 不同Recycleview的数据交互

需求:点击按钮,弹出dialog, 实现 以下效果


首先,编辑 和添加 分别  是两个recycleview,然后 要实现  他们两个的数据交互,

代码 如下

//选择标签
choose.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (addRecyle == null) {
            dialog = new AlertDialog.Builder(getActivity()).create();
            dialog.show();

            View view = UiUtils.inflate(getActivity(), R.layout.dialog_dscv);
            imgPack = (ImageView) view.findViewById(R.id.img_pack);
            editRecyle = (MyRecycleView) view.findViewById(R.id.edit_recyle);
            editRecyle.setLayoutManager(new GridLayoutManager(getActivity(), 4));
            addRecyle = (MyRecycleView) view.findViewById(R.id.add_recyle);
            addRecyle.setLayoutManager(new GridLayoutManager(getActivity(), 4));

            editAdapter = new DialogDscvAdapter();
            addAdapter = new DialogDscvAdapter();

            editRecyle.setAdapter(editAdapter);
            addRecyle.setAdapter(addAdapter);
            addAdapter.setShow(false);

            addAdapter.setDatas(addDatas);
            editAdapter.setDatas(editDatas);
            dialog.getWindow().setContentView(view);
            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
                    Global.mScreenWidth, Global.mScreenHeight - UiUtils.dp2px(getActivity(), 115));
            dialog.getWindow().setContentView(view, params);
            dialog.getWindow().setGravity(Gravity.CENTER);
            dialog.setCanceledOnTouchOutside(false);
            dialog.getWindow().setBackgroundDrawableResource(R.drawable.tianjiagongnengbeijing_nav_find);
            initDialogListener();
        } else {
            dialog.show();
        }


    }
});
 
 
//dialog里的recycleviewitem单机事件
private void initDialogListener() {
    //编辑
    addAdapter.setListener(new DialogDscvAdapter.MyListener() {
        @Override
        public void onItemClick(View v, String str) {
            addDatas.remove(str);
            editDatas.add(str);
            addAdapter.setDatas(addDatas);
            editAdapter.setDatas(editDatas);
        }
    });

    //添加关注
    editAdapter.setListener(new DialogDscvAdapter.MyListener() {
        @Override
        public void onItemClick(View v, String str) {
            editDatas.remove(str);
            addDatas.add(str);
            addAdapter.setDatas(addDatas);
            editAdapter.setDatas(editDatas);
        }
    });

    //确定添加的按钮
    imgPack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
            titles.clear();
            initTitles();
        }
    });

}

 
public class DialogDscvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener{

    private List<String> mDatas=new ArrayList<>();
    private boolean show=true;

    public void setDatas(List<String> datas){
        mDatas=datas;
        notifyDataSetChanged();
    }

    public void setData(String data){
        mDatas.add(data);
        notifyDataSetChanged();
    }

    public void delData(String data){
        mDatas.remove(data);
        notifyDataSetChanged();
    }

    public void setShow(boolean show){
        this.show=show;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=UiUtils.LayoutInflate(parent.getContext(),R.layout.dialog_item_dscv,parent);
        MViewHolder mHolder=new MViewHolder(view);
        view.setOnClickListener(this);
        return mHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MViewHolder mHolder = (MViewHolder) holder;
        holder.itemView.setTag(mDatas.get(position));
        mHolder.dlgTv.setText(mDatas.get(position));
        if(show){
            mHolder.dlgDel.setVisibility(View.VISIBLE);
        }else{
            mHolder.dlgDel.setVisibility(View.INVISIBLE);
        }
    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }

    class MViewHolder extends RecyclerView.ViewHolder {
        private TextView dlgTv;
        private ImageView dlgDel;

        public MViewHolder(View itemView) {
            super(itemView);
            dlgTv = (TextView) itemView.findViewById(R.id.dlg_tv);
            dlgDel = (ImageView) itemView.findViewById(R.id.dlg_del);

        }
    }

    @Override
    public void onClick(View v) {
        if(listener!=null){
            listener.onItemClick(v, (String) v.getTag());
        }
    }
    private MyListener listener;

    public interface MyListener{
        void onItemClick(View v,String str);
    }

    public void setListener(MyListener listener){
        this.listener=listener;
    }
}
需要注意的地方,当recycleview单机时,触动数据的改变,所以要用到 接口的回调,这里大家要多多研究,


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值