如何根据回收站视图中的事件获取图像?

时间:2018-02-09 11:00:04

标签: android image android-recyclerview

解决!见帖子的底部。

我正在使用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"))

不确定为什么,因为它是相同的措辞。那么,有利于将来的参考:)

1 个答案:

答案 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 );
            }