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

时间:2019-03-10 15:07:57

标签: android android-recyclerview textview settext

  

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

我尝试解决这个问题大约一个星期。当我使用 itemTexte2.get(i).toString()制作 Toast消息时,它会显示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();

    }

}

1 个答案:

答案 0 :(得分:1)

您已将itemTextView定义为static TextView。这意味着您所有物品中只有一个。每个视图持有者需要一个。

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

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

这应该可以解决此问题。您还需要处理其他静态字段。