解决!见帖子的底部。
我正在使用API,将其JSON
数据反序列化为变量,并在recyclerView
中显示数据。到目前为止,这么好,一切正常。但是,我想根据显示的事件标题显示不同的图像。例如,事件标题A应该具有图像A,事件标题B应该具有图像B,依此类推。
我已经实现了我认为应该有效的代码,但由于某些原因它并没有。在
public void onBindViewHolder(RVviewHolder holder, int position)
我使用了以下代码:
if (myList.get( position ).getTitle() == "A") {
iconImageView.setImageResource( R.drawable.ic_a );
}
if (myList.get( position ).getTitle() == "B") {
iconImageView.setImageResource( R.drawable.ic_b );
}else {
iconImageView.setImageResource( R.drawable.ic_c );
}
程序运行没有错误,日志显示getTitle()
包含A,但只显示drawable c
。我已经检查过所有图像都有效,我也尝试过类似的代码:
iconImageView = itemView.findViewById( R.id.iconImageView );
if (RVevent.getTitle() == "A") {
iconImageView.setImageResource( R.drawable.ic_a );
Log.i( TAG, "yepp");
} else {
iconImage.setImageResource( R.drawable.ic_b );
Log.i( TAG, "nope");
}
逻辑应该有效,但我一定错过了一些东西......我能解释得这么好还是我应该在问题中提供更多信息?
解决方案:
好的,问题的解决方案是在最后添加.contains
:
if (myList.get( position ).getTitle().contains( "A"))
不确定为什么,因为它是相同的措辞。那么,有利于将来的参考:)
答案 0 :(得分:0)
问题在于你的逻辑,应该是这样的。你的代码比较B与C&单独检查if条件。意味着首先用A检查,然后用C检查B.
if (myList.get( position ).getTitle() == "A") {
iconImageView.setImageResource( R.drawable.ic_a );
}
else if (myList.get( position ).getTitle() == "B") {
iconImageView.setImageResource( R.drawable.ic_b );
}
else {
iconImageView.setImageResource( R.drawable.ic_c );
}
reyclerview_row.xml
内的ViewHolder
视图初始化不在OnBindViewHolder
内
尝试下面的代码:
class MyViewHolder extends RecyclerView.ViewHolder{
ImageView iconImageView ;
public MyViewHolder(View itemView) {
super(itemView);
iconImageView = itemView.findViewById( R.id.iconImageView );
}
}
您的onBindViewHolder
方法应该是这样的:
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
if (myList.get( position ).getTitle() == "A") {
holder.iconImageView.setImageResource( R.drawable.ic_a );
}
else if (myList.get( position ).getTitle() == "B") {
holder.iconImageView.setImageResource( R.drawable.ic_b );
}
else {
holder.iconImageView.setImageResource( R.drawable.ic_c );
}
}
或者,您也可以尝试使用以下代码
if ("A".equalsIgnoreCase(myList.get(position).getTitle())) {
holder.iconImageView.setImageResource( R.drawable.ic_a );
}
else if ("B".equalsIgnoreCase(myList.get(position).getTitle()))
{
holder.iconImageView.setImageResource( R.drawable.ic_b );
}
else {
holder.iconImageView.setImageResource( R.drawable.ic_c );
}