点击项目会更新recyclerview中的其他项目吗?

时间:2017-05-12 11:35:28

标签: java android recycler-adapter

  

我有一个回收者视图,其中包含点击检查的复选框   框我更新了数量的值。问题是如果我选择了   我的回收站视图中的第一个复选框,甚至是第五个   复选框自动检查。

以下是onActivityResult的代码,我调用了负责处理click事件的updateBooks。

@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    mAdapter.notifyDataSetChanged();
    search_info.clear();
    book_type.clear();


    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {


            getBookData(data);


            if (books_list.size() > 0) {

                books_list.clear();
                mAdapter.swap(prepareData());
                mAdapter.notifyDataSetChanged();

            }
            updateBooks(recyclerView);
            mAdapter.notifyDataSetChanged();


        }
    }
}

以下是updateBooks的代码。

  private void updateBooks(RecyclerView recyclerView) {

        mAdapter = new DataAdapter(getApplicationContext(), prepareData(), recyclerView, qty, new DataAdapter.OnItemCheckListener() {
            @Override
            public void onItemCheck(BooksInfo item, DataAdapter.ViewHolder viewHolder) {

                if (qty.equals("") || qty.equals(null)) {
                    viewHolder.tv_qty.setText("0");
                } else {

                    viewHolder.tv_qty.setText(qty);
                }

            }

            @Override
            public void onItemUncheck(BooksInfo item, DataAdapter.ViewHolder viewHolder) {


                viewHolder.tv_qty.setText("0");
            }
        });
        recyclerView.setAdapter(mAdapter);

    }

这是我的适配器代码。

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder>  {
    private ArrayList<BooksInfo> books;
    private Context ctx;
    private String qty;

    private RecyclerView recyclerView;
    public DataAdapter()
    {

    }
    @NonNull
    public OnItemCheckListener onItemCheckListener;

    public DataAdapter(Context context, ArrayList<BooksInfo> books, RecyclerView recyclerView,String qty, OnItemCheckListener onItemCheckListener) {
        this.books = books;
        this.ctx = context;
        this.qty = qty;
        this.onItemCheckListener =onItemCheckListener;
        this.recyclerView = recyclerView;

    }

   public interface OnItemCheckListener {
        void onItemCheck(BooksInfo item,ViewHolder viewHolder);
        void onItemUncheck(BooksInfo item,ViewHolder viewHolder);
    }

    public void swap(ArrayList<BooksInfo> datas){
        datas = new ArrayList<>();
        recyclerView.removeAllViews();
        books.clear();
        books.addAll(datas);
        notifyDataSetChanged();

    }

    @Override
    public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final DataAdapter.ViewHolder viewHolder, int i) {



        final BooksInfo booksInfo = (BooksInfo) books.get(i);

        viewHolder.tv_title.setText(booksInfo.getTitle());
        viewHolder.tv_price.setText(booksInfo.getPrice());
        viewHolder.tv_vol_no.setText(booksInfo.getVol_no());
        viewHolder.tv_status.setText(booksInfo.getStatus());
        viewHolder.tv_isbn.setText(booksInfo.getISBN());
        viewHolder.tv_book_id.setText(booksInfo.getBook_id());
        viewHolder.tv_brand.setText(booksInfo.getBrand());
        viewHolder.tv_sku.setText(booksInfo.getSku());

        viewHolder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewHolder.cb_selection.setChecked(!(viewHolder.cb_selection.isChecked()));
                if (viewHolder.cb_selection.isChecked()){
                    onItemCheckListener.onItemCheck(booksInfo,viewHolder);
//                    viewHolder.tv_qty.setText(qty);
                }else{
                    onItemCheckListener.onItemUncheck(booksInfo,viewHolder);
//                    viewHolder.tv_qty.setText("0");
                }

            }
        });


    }

    public void updateNotes(ArrayList notesList) {
        books = notesList;
    }


    public void updateQty(String q)
    {
        qty =q;

    }

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




    public class ViewHolder extends RecyclerView.ViewHolder{
        public TextView tv_title,tv_price,tv_vol_no,tv_status,tv_isbn,tv_book_id,tv_brand,tv_sku,tv_qty;
        public CheckBox cb_selection;
        View itemView;
        public ViewHolder(View itemView) {
            super(itemView);
            this.itemView = itemView;

            tv_title = (TextView)itemView.findViewById(R.id.tv_title);
            tv_price = (TextView) itemView.findViewById(R.id.tv_price);
            tv_vol_no = (TextView) itemView.findViewById(R.id.tv_volno);
            tv_status = (TextView) itemView.findViewById(R.id.tv_status);
            tv_isbn = (TextView) itemView.findViewById(R.id.tv_isbn);
            tv_book_id = (TextView) itemView.findViewById(R.id.tv_bookid);
            tv_brand = (TextView) itemView.findViewById(R.id.tv_brand);
            cb_selection = (CheckBox) itemView.findViewById(R.id.cb_selection);
            cb_selection.setClickable(false);
            tv_sku = (TextView) itemView.findViewById(R.id.tv_sku);
            tv_qty = (TextView) itemView.findViewById(R.id.tv_qty);
        }

        public void setOnClickListener(View.OnClickListener onClickListener) {
            itemView.setOnClickListener(onClickListener);
        }
    }

}

0 个答案:

没有答案