2015-07-12 105 views
1

我有一个ReciclerView,它使用一个名为“SimpleItemRecyclerViewAdapter”的适配器。 ReciclerView中的每个项目都位于项目的“drawable”文件夹中。我能够在TextView上设置测试,但我不确定如何为图像执行此操作。这里是我得到的输出...图像应该出现在黑色方块上,并且是一个ImageView小部件。在ViewAdapter上加载图像资源

enter image description here

这里是我的适配器代码:

package uk.co.example.calculator.adapters; 

import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.List; 

import uk.co.example.calculator.R; 
import uk.co.example.calculator.ui.activities.Currency; 

public class SimpleItemRecyclerViewAdapter extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.RecyclerViewSimpleTextViewHolder> { 

    // The items to display in your RecyclerView 
    private List<Currency> items; 

    // Provide a suitable constructor (depends on the kind of dataset) 
    public SimpleItemRecyclerViewAdapter(List<Currency> items) { 
     this.items = items; 
    } 

    // Return the size of your dataset (invoked by the layout manager) 
    @Override 
    public int getItemCount() { 
     return this.items.size(); 
    } 

    // Replace the contents of a view (invoked by the layout manager) 
    // Involves populating data into the item through holder 
    @Override 
    public void onBindViewHolder(RecyclerViewSimpleTextViewHolder holder, int position) { 
     Currency currency = items.get(position); 
     holder.getName().setText(currency.name); 
     holder.getSymbol().setText(currency.symbol); 
     holder.getAsset().?????????; // WHAT SHOULD I PUT HERE TO LOAD THE IMAGE FROM THE RAW FOLDER 
    } 

    // Create new items (invoked by the layout manager) 
    // Usually involves inflating a layout from XML and returning the holder 
    @Override 
    public RecyclerViewSimpleTextViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { 
     View itemView = LayoutInflater.from(viewGroup.getContext()). 
       inflate(R.layout.currency_list_card_layout, viewGroup, false); 
     return new RecyclerViewSimpleTextViewHolder(itemView); 
    } 


    public class RecyclerViewSimpleTextViewHolder extends RecyclerView.ViewHolder { 
     private TextView name; 
     private TextView symbol; 
     private ImageView asset; 

     public RecyclerViewSimpleTextViewHolder(View v) { 
      super(v); 
      name = (TextView) v.findViewById(R.id.currency_name); 
      symbol = (TextView) v.findViewById(R.id.currency_symbol); 
      asset = (ImageView) v.findViewById(R.id.currency_asset); 
     } 

     public TextView getName() { 
      return name; 
     } 

     public TextView getSymbol() { 
      return symbol; 
     } 

     public ImageView getAsset() { 
      return asset; 
     } 

    } 
} 

如何显示包含在文件夹中绘制图像上的任何详细的帮助将不胜感激。

回答

2

您可以从内onBindViewHolder

访问您的ImageView例如,放入onBindViewHolder:

Resources resources = getResources(); 
holder.getAsset().setImageDrawable(resources.getDrawable(R.drawable.myimage)); 
+0

Hi @ Jonty800。谢谢回复。我认为你的回答很好,但是在实施你的解决方案后,Android Studio会警告我“无法解析符号getResources”。任何想法如何我可以解决这个错误?提前致谢。 – CBA110

+0

@ CBA110 getResources是Activity或Context类的一部分。在一个适配器中,你必须传递一个上下文。因此,将适配器的构造更改为'public SimpleItemRecyclerViewAdapter(列表项目,Context上下文)',然后使用'this.context = context;'设置一个全局变量。然后你可以做'context.getResources('需要的时候 – Jonty800

2

尝试使用图片库进行图片加载。我的建议是毕加索(https://github.com/square/picasso

有了它,你可以很容易地通过简单地调用加载从绘制的图像:

Picasso.with(context).load(R.drawable.drawableName).into(holder.getAsset());