Art*_*tin 3 android android-recyclerview
我有一个 RecyclerView 列出来自服务器的数据,它必须根据条件以不同的方式显示每行数据。我的数据是票证消息列表。如果消息是从用户发送的,则其背景必须为灰色;如果消息来自代理,则背景必须为蓝色。此外,如果此消息有附件,则必须显示下载图标。这是我的适配器代码:
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
if (holder.getItemViewType() == 0) {
holder.itemView.setBackgroundResource(R.drawable.radius_background_gray);
holder.ticketDate.setBackgroundResource(R.drawable.radius_background_light_gray);
}
if(ticket.get(position).getAttachment() != null)
holder.ticketStatus.setImageResource(R.drawable.ic_attachment_black_24dp);
holder.ticketTitle.setText(ticket.get(position).getAgentName() + " said :");
}
@Override
public int getItemViewType(int position) {
if(ticket.get(position).getDirection().equals("out"))
return 0;
else return 1;
}
Run Code Online (Sandbox Code Playgroud)
颜色设置正确,但是当我使用 if 子句设置附件的 imageView 时,没有附件且为空的消息显示附件图标!我还应该在 getItemType 而不是 onBindViewHolder 中检查此条件吗?
我可以告诉你,在我使用 RecyclerView 的实践中,最好else在 if 中包含一个子句。
因此,例如,在您的情况下,您可以执行以下操作:
if(ticket.get(position).getAttachment() != null)
holder.ticketStatus.setImageResource(R.drawable.ic_attachment_black_24dp);
else
holder.ticketStatus.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |