很抱歉,我知道我重复了这个问题。当我更改cardview
上的文字时,文字会重复到另一个文字。文字textview
因位置不同而不同。当我点击某个组件{{1}时1}}重复另一个。请帮我解决问题..
onclicklistener
答案 0 :(得分:1)
由于其回收机制,这是RecyclerView的正常行为。如果不满足条件,您应该重置View的可见性。例如:
if(yourConditionIsTrue) {
yourView.setVisibality(View.VISIBLE);
} else {
yourView.setVisibality(View.GONE);
}
在您的情况下,将条件移出点击侦听器:
@Override
public void onBindViewHolder(final DataObjectHolder holder, int position) {
Context context=null;
holder.set.setVisibility(View.INVISIBLE);
holder.qua.setVisibility(View.INVISIBLE);
if (!(mDataset.get(position).getmText2()==null && mDataset.get(position).getmText2().equals("0"))) {
holder.text.setVisibility(View.VISIBLE);
holder.text.setText(mDataset.get(position).getmText2());
} else {
holder.text.setVisibility(View.INVISIBLE);
}
if(!(mDataset.get(position).getmText1().length()<=3&&mDataset.get(position).getmText1() == null && mDataset.get(position).getmText1().equals("#EE"))) {
Log.e("Hello",mDataset.get(position).getmText1());
holder.cardView.setCardBackgroundColor(Color.parseColor(mDataset.get(position).getmText1()));
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.set.setVisibility(View.VISIBLE);
holder.qua.setVisibility(View.VISIBLE);
holder.text.setVisibility(View.INVISIBLE);
holder.set.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDataset.get(position).setmText2(holder.qua.getText().toString());
holder.text.setVisibility(View.VISIBLE);
holder.set.setVisibility(View.INVISIBLE);
holder.qua.setVisibility(View.INVISIBLE);
holder.text.setText(mDataset.get(position).getmText2());
});
}
});
}
}
答案 1 :(得分:1)
这是因为OnCreateViewHolder不会在每次创建单元格时重复。 RecyclerView仅在特定时间调用它,然后重复这些视图。
解决方法是在Datalist的类中创建一个对象,每当EditText按位置更改时保存该对象中的数据,并在每个OnBindViewHolder调用上按位置获取该数据并重新加载editText,否则保持为空。