java - 如何在回收器 View 适配器中获取上下文

标签 java android android-recyclerview picasso android-context

我正在尝试使用 picasso 库来将 url 加载到 imageView,但我无法让 context 正确使用 picasso 库。

public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
    private List<Post> mDataset;



    // Provide a reference to the views for each data item
    // Complex data items may need more than one view per item, and
    // you provide access to all the views for a data item in a view holder
    public class ViewHolder extends RecyclerView.ViewHolder {
        // each data item is just a string in this case
        public TextView txtHeader;
        public ImageView pub_image;
        public ViewHolder(View v) {
            super(v);
            txtHeader = (TextView) v.findViewById(R.id.firstline);
            pub_image = (ImageView) v.findViewById(R.id.imageView);


        }
    }




    // Provide a suitable constructor (depends on the kind of dataset)
    public FeedAdapter(List<Post> myDataset) {
        mDataset = myDataset;
    }

    // Create new views (invoked by the layout manager)
    @Override
    public FeedAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        // create a new view
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.feedholder, parent, false);
        // set the view's size, margins, paddings and layout parameters
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // - get element from your dataset at this position
        // - replace the contents of the view with that element

        holder.txtHeader.setText(mDataset.get(position).getPost_text());

        Picasso.with(this.context).load("http://i.imgur.com/DvpvklR.png").into(holder.pub_image);


    }

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

}

最佳答案

你有几个选择:

  1. Context 作为参数传递给 FeedAdapter 并将其保留为类字段
  2. 在需要时使用依赖注入(inject)注入(inject) Context。我强烈建议阅读它。有一个很棒的工具——Dagger按广场
  3. 从任何 View 对象中获取它。在您的情况下,这可能对您有用:

    holder.pub_image.getContext()

    因为 pub_image 是一个 ImageView

关于java - 如何在回收器 View 适配器中获取上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136973/

相关文章:

android - 使用滚动 RecyclerView 时如何在 ViewPager 中隐藏工具栏?

android - 滚动 Activity 中的 Recyclerview 出现空白问题

android - 将相同的图库图像加载到两个不同的 Activity fragment 中 Android Picasso

java - JAX-RS 应用程序未收到 Apache Wink Rest 客户端错误的正文

android - 选择联系人详细信息,其中 People._ID = android 中的联系人 ID

Android 拒绝写入/创建共享首选项文件

android - 如何解决歧义方法?

java - 使用 itext 4 编辑 pdf 中的现有超链接

java - 尝试使用 fileProvider 从 Assets 文件夹中打开 PDF 文件,但出现 FileNotFoundException : No such file or directory

java - 如何评估此 switch 语句?