В Android Studio неправильный текст установлен на TextView в RecyclerView - PullRequest
0 голосов
/ 10 марта 2019

У меня есть несколько списков ArrayList, в которые вставляются продукты, и у меня проблема в том, что в itemTextView установлен текст, которого нет в этом ArrayList.Что я делаю неправильно?Пожалуйста, ответьте.

Я пытался решить эту проблему около недели.Когда я создаю сообщение Toast с помощью itemTexte2.get (i) .toString () , он показывает текст с правым краем, но когда я добавляю его в TextView с отображениемневерный текст в представлении переработчика

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

    DatabaseHelper mDatabaseHelper;

    static TextView itemTextView, unitItemTextView;
    static ImageView itemImageView;
    static CheckBox checkBox;

    static ArrayList<Integer> positions = new ArrayList();


    public class ViewHolderKlasse extends RecyclerView.ViewHolder {

        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) {

        Toast.makeText(unitItemTextView.getContext(), itemTexte2.get(i).toString(), Toast.LENGTH_SHORT).show();

        itemTextView.setText(itemTexte2.get(i).toString());
        unitItemTextView.setText(itemTexte2.get(i).toString());
        itemImageView.setImageResource(R.drawable.dots);


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

            }
        });

        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;
            }
        });


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

            }
        });

    }

    @Override
    public int getItemCount() {

        return itemTexte2.size();

    }

}

1 Ответ

1 голос
/ 10 марта 2019

Вы определили itemTextView как static TextView.Это означает, что у вас есть только один из них для всех ваших предметов.Вам нужен один для каждого держателя вида.

Удалите статическое определение для itemTextView и определите переменную члена класса с именем itemTextView в своем держателе вида ViewHolderKlasse.Затем вы установите эту переменную в onBindViewHolder() следующим образом:

viewHolderKlasse.itemTextView.setText(itemTexte2.get(i).toString());

Это должно решить эту проблему.У вас есть другие статические поля, к которым вам также нужно будет обратиться.

...