Android Studio错误的文本设置为Recyclerview中的TextView



我有一些插入产品的阵列清单,我有 问题,在ItemTextView中设置了一个文本,这不是 数组列表。我究竟做错了什么?请回答。

我试图解决这个问题大约一周。当我用 toast message 使用 itemTexte2.get(i).toString()显示Wright文本,但是当我将其添加到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();
    }
}

您将itemTextView定义为static TextView。这意味着您只为所有物品都有其中之一。您需要每个视图支架。

删除itemTextView的静态定义,并在视图持有人ViewHolderKlasse中定义名为itemTextView的类成员变量。然后,您将在onBindViewHolder()中设置此变量:

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

这应该解决这个问题。您还有其他静态字段,也需要解决。

最新更新