我有一些插入产品的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();
}
}
答案 0 :(得分:1)
您已将itemTextView
定义为static TextView
。这意味着您所有物品中只有一个。每个视图持有者需要一个。
删除itemTextView
的静态定义,并在视图持有者itemTextView
中定义一个名为ViewHolderKlasse
的类成员变量。然后,您将像这样在onBindViewHolder()
中设置此变量:
viewHolderKlasse.itemTextView.setText(itemTexte2.get(i).toString());
这应该可以解决此问题。您还需要处理其他静态字段。