Android Studio переработчик Просмотреть CHECKBOX с несколькими списками - PullRequest
0 голосов
/ 13 марта 2019

Вот несколько изображений

Элемент в RecyclerView с CHECKBOX

Несколько списков

У меня есть несколько списков, которые можно создавать динамически, и есть один ArrayList из Texte2 с именем itemTexte, который включает в себя все элементы во всех списках вместе, и есть второй ArrayList с именем itemTexte2, который включает только элементы фактического списка.

Мой вопрос теперь таков: как мне работать с флажками в нескольких списках ?Потому что моя обработка неверна.

public class Texte2 {

    int listId;
    String table;
    String product;
    int state;

    public Texte2(int listId, String table, String product, int state){
        setListId(listId);
        setTable(table);
        setProduct(product);
        setState(state);
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public int getListId() {
        return listId;
    }

    public void setListId(int listId) {
        this.listId = listId;
    }

    public String getTable() {
        return table;
    }

    public void setTable(String table) {
        this.table = table;
    }

    public String getProduct() {
        return product;
    }

    public void setProduct(String product) {
        this.product = product;
    }
}

> Here is the RvAdapterKlasse, which handles also the **CHECKBOXES**

public class RvAdapterKlasse extends RecyclerView.Adapter<RvAdapterKlasse.ViewHolderKlasse> {

    //Classes
    DatabaseHelper mDatabaseHelper;

    public class ViewHolderKlasse extends RecyclerView.ViewHolder {

        TextView itemTextView, unitItemTextView;
        ImageView itemImageView;
        CheckBox checkBox;

        public ViewHolderKlasse(@NonNull final View itemView) {

            super(itemView);

            mDatabaseHelper = new DatabaseHelper(itemView.getContext());

            itemTextView = itemView.findViewById(R.id.textViewItem);
            itemImageView = itemView.findViewById(R.id.imageViewItem);
            unitItemTextView = itemView.findViewById(R.id.unitTextViewItem);
            checkBox = itemView.findViewById(R.id.checkBox);

        }
    }

    @NonNull
    @Override
    public ViewHolderKlasse onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        View itemView1 = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_layout1, null);

        return new ViewHolderKlasse(itemView1);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolderKlasse viewHolderKlasse, final int i) {

        Iterator iterator = MainActivity.itemTexte2.keySet().iterator();
        ArrayList arrayList0 = new ArrayList();
        while (iterator.hasNext()){
            arrayList0.add(iterator.next());
        }

        viewHolderKlasse.itemTextView.setText(arrayList0.get(i).toString());
        viewHolderKlasse.unitItemTextView.setText(itemSecondTexte2.get(i).toString());
        viewHolderKlasse.itemImageView.setImageResource(itemFotoIDs2.get(i));
        Iterator iterator1 = MainActivity.itemTexte.iterator();

        ArrayList elemente = new ArrayList();

        while (iterator1.hasNext()){

            Texte2 texte2 = (Texte2) iterator1.next();

            if(texte2.getTable().equals(MainActivity.listTextView.getText().toString())){

                elemente.add(texte2.getListId());

            }

        }

        for(int m = 0; m < elemente.size(); m++){

            if((int) elemente.get(m) == mDatabaseHelper.getProductId(arrayList0.get(i).toString())){

                Texte2 texte2 = itemTexte.get(m);

                int state = texte2.getState();

                if(state == 0){
                    viewHolderKlasse.checkBox.setChecked(false);
                }else{
                    viewHolderKlasse.checkBox.setChecked(true);
                }
            }

        }


        viewHolderKlasse.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(v.getContext(), DetailsActivity.class);

                Iterator iterator = MainActivity.itemTexte2.keySet().iterator();
                ArrayList arrayList = new ArrayList();
                while (iterator.hasNext()){
                    arrayList.add(iterator.next());
                }

                String productString = arrayList.get(i).toString();
                String price = "";
                String lastPurchase = "";
                String amount = "";
                String unit = "";

                Product product = new Product(productString);

                for(Product p : MainActivity.product_Arr){

                    if(product.equals(p)){

                        price = p.getProduct_price();
                        lastPurchase = p.getProductDate();
                        String amountUnitArr[] = MainActivity.itemSecondTexte2.get(i).split(" ");

                        amount = amountUnitArr[0];
                        unit = amountUnitArr[1];

                    }

                }

                intent.putExtra("product", arrayList0.get(i).toString());
                intent.putExtra("id", i);
                intent.putExtra("price", price);
                intent.putExtra("lastPurchase", lastPurchase);
                intent.putExtra("amount", amount);
                intent.putExtra("unit", unit);
                v.getContext().startActivity(intent);

            }
        });


        viewHolderKlasse.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {

                Intent intent = new Intent(v.getContext(), PriceActivity.class);
                String text = ((TextView) MainActivity.recyclerView1.findViewHolderForAdapterPosition(i).itemView.findViewById(R.id.textViewItem)).getText().toString().trim();
                intent.putExtra("product", text);
                v.getContext().startActivity(intent);

                return false;
            }
        });


        viewHolderKlasse.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                Iterator iterator = MainActivity.itemTexte2.keySet().iterator();
                ArrayList arrayList = new ArrayList();
                while (iterator.hasNext()){
                    arrayList.add(iterator.next());
                }

                int productId = mDatabaseHelper.getProductId(arrayList.get(i).toString());

                if(isChecked){
                    mDatabaseHelper.updateListState(productId, 1);
                    for (int i1 = 0; i1 < MainActivity.itemTexte.size(); i1++){
                        if(MainActivity.itemTexte.get(i1).getProduct().equals(viewHolderKlasse.itemTextView.getText().toString())){
                            MainActivity.itemTexte.get(i1).setState(1);
                        }
                    }

                    //
                }else{
                    mDatabaseHelper.updateListState(productId, 0);
                    for (int i2 = 0; i2 < MainActivity.itemTexte.size(); i2++){
                        if(MainActivity.itemTexte.get(i2).getProduct().equals(viewHolderKlasse.itemTextView.getText().toString())){
                            MainActivity.itemTexte.get(i2).setState(0);
                        }
                    }
                }
            }
        });

    }

    @Override
    public int getItemCount() {

        return itemTexte2.size();

    }

}

Этот класс вызывается при каждом переключении между списками (Изображение 2) , и он вставляет элементы из itemTexte, которые принадлежат выбранному списку, в itemTexte2

public class RecyclerAdapter extends RecyclerView.Adapter <RecyclerAdapter.RecyclerViewHolder>{

    ArrayList<String> arrayList = new ArrayList<>();
    View view;

    public RecyclerAdapter(ArrayList<String> arrayList){

        this.arrayList = arrayList;

    }

    @Override
    public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout, viewGroup, false);
        RecyclerViewHolder viewHolder = new RecyclerViewHolder(view);
        return viewHolder;

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerViewHolder recyclerViewHolder, int i) {

        recyclerViewHolder.textView.setText(arrayList.get(i));
        recyclerViewHolder.imageView.setImageResource(R.color.colorAccent);

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                MainActivity.itemTexte2.clear();
                MainActivity.itemSecondTexte2.clear();
                MainActivity.itemFotoIDs2.clear();

                MainActivity.listTextView.setText(arrayList.get(i));

                MainActivity.rvadapter1.notifyDataSetChanged();

                MainActivity.listIdText.setText(String.valueOf(MainActivity.arrayIds.get(i)));

                Iterator iterator1 = MainActivity.itemTexte.iterator();
                Iterator iterator2 = MainActivity.itemSecondTexte.iterator();
                Iterator iterator3 = MainActivity.itemFotoIDs.iterator();


                while (iterator1.hasNext()){

                    Texte2 texte2 = (Texte2) iterator1.next();

                    //Toast.makeText(v.getContext(), iterator.next().toString(), Toast.LENGTH_SHORT).show();

                    if(texte2.getTable().equals(MainActivity.listTextView.getText().toString())){

                         MainActivity.itemTexte2.put(texte2.getProduct(), texte2.getState());

                    }

                }

                while (iterator2.hasNext()){

                    SecondTexte2 secondTexte2 = (SecondTexte2) iterator2.next();

                    //Toast.makeText(v.getContext(), iterator.next().toString(), Toast.LENGTH_SHORT).show();

                    if(secondTexte2.getTable().equals(MainActivity.listTextView.getText().toString())){

                        MainActivity.itemSecondTexte2.add(secondTexte2.getUnit());

                    }

                }

                while (iterator3.hasNext()){

                    FotoIdTexte2 fotoIdTexte2 = (FotoIdTexte2) iterator3.next();

                    //Toast.makeText(v.getContext(), iterator.next().toString(), Toast.LENGTH_SHORT).show();

                    if(fotoIdTexte2.getTable().equals(MainActivity.listTextView.getText().toString())){

                        MainActivity.itemFotoIDs2.add(fotoIdTexte2.getFotoId());

                    }

                }

                MainActivity.rvadapter1.notifyDataSetChanged();

                MainActivity.drawerLayout.closeDrawer(Gravity.START);
            }
        });

    }

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

    public static class RecyclerViewHolder extends RecyclerView.ViewHolder
    {
        TextView textView;
        ImageView imageView;
        public RecyclerViewHolder(View view) {

            super(view);

            textView = view.findViewById(R.id.tx_item);
            imageView = view.findViewById(R.id.iv);

        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...