1。我有一个问题:RecyclerView在滚动时显示错误数据,我把if- onBindViewHolder()中的else条件,用于在Child上显示描述文本 特定条件下的项目,首次显示列表时 正确,但在滚动列表后显示错误。
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final ContentItem content = values.get(position);
holder.txtName.setText(content.getName());
if( holder.txtDescription.equals("hasDescription"))
{
holder.txtHeader.setText(content.getDescription());
}
}
谢谢。
答案 0 :(得分:1)
我想您看到的项目本来就不应该带有说明。
这是回收者视图的性质。顾名思义,您必须回收您的物品。基本上,已经使用过的项目将被重用。在您的情况下,如果某件商品有描述,而现在却没有,那么您也需要清理它:
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final ContentItem content = values.get(position);
holder.txtName.setText(content.getName());
if( holder.txtDescription.equals("hasDescription")) {
holder.txtHeader.setText(content.getDescription());
} else{
holder.txtHeader.setText("");
}
}
如您所见,这样,每个人都不需要对项目进行描述,就可以对其进行清理。
答案 1 :(得分:1)
看起来像您缺少重写某些方法。您需要覆盖以下方法。
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
答案 2 :(得分:0)
尝试
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final ContentItem content = values.get(position);
holder.txtName.setText(content.getName());
if( holder.txtDescription.equals("hasDescription"))
{
holder.txtHeader.setText(content.getDescription());
}
else{
holder.txtHeader.setVisibility(View.GONE);
}
}
答案 3 :(得分:0)
如果从API中获取“ hasDescription”,请执行以下操作:
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final ContentItem content = values.get(position);
holder.txtName.setText(content.getName());
if(content.getDescription.equals("hasDescription"))
{
holder.txtHeader.setText(content.getDescription());
}
}