当前位置: 首页 > 知识库问答 >
问题:

如何在回收器视图适配器中获取上下文

裴姚石
2023-03-14

我试图使用picasso库将url加载到imageView,但无法获得上下文来正确使用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个答案

糜俊彦
2023-03-14

这里有几个选项:

>

  • 上下文作为参数传递给FeedAdapter并将其保留为类字段
  • 使用依赖注入在需要时注入上下文。我强烈建议阅读这篇文章。有一个很好的工具--方形匕首
  • 从任何视图对象获取。在您的情况下,这可能适用于您:

    holder.pub_image.getContext()

    因为pub_imageImageView

  •  类似资料:
    • 问题内容: 我正在尝试使用Picasso库来将URL加载到imageView,但是我无法正确使用Picasso库。 问题答案: 您在这里有一些选择: 作为参数传递给FeedAdapter并将其保留为类字段 在需要时使用依赖项注入进行注入。我强烈建议您阅读有关内容。有一个很棒的工具-Dagger by Square 从任何对象获取它。在您的情况下,这可能适合您: 作为一个。

    • 我正在寻找在Android中使用列表适配器和Recyview适配器的区别。关于性能的任何不同,使用它们的利弊。

    • 如何得到TextView的一个活动在RecycleViewAdapter类和TextView不在布局行对于RecycleViewitem.As在RecycleViewAdapter我们覆盖方法 因为它只得到<code>中声明的那些,ViewHolder扩展了RecyclerView。ViewHolder和ViewHolder将仅获取<code>视图中的ui v=充气机。充气(R.layout.ne

    • 我有一个父回收器视图,其中包含一个水平回收器视图作为其项目。在其中,我将显示分类视频。当我开始滚动水平回收器视图时,应用程序崩溃。 错误是: 我的代码是category类 垂直适配器 水平适配器

    • 我刚开始在firebase工作。我设法上传了文本和图像,但是,我无法检索要显示在回收器视图中的图像,只能检索文本。我用的是毕加索依赖。我已经包括了我的主要活动。java类,该类负责显示从问题“我的适配器”中的firebase检索的回收器视图项。java类和模型类。我相信,在我将图像URI上载到firebase存储时,我可能犯了没有存储图像URI的错误,因此适配器无法检索图像位置。我想这可能是因为我

    • 下面你可以找到fragment类,我在那个片段中有一个RecycerView,当用户长时间按下RecycerView中的一个项目时,我试图打开一个上下文菜单。 我能够显示上下文菜单,并为一个片段的单个实例获取选定项的位置,当我滑动到下一个片段时,我得到了相同的索引位置,当我进一步调试时,我发现我得到了前一个片段上的RecycerView的相同适配器。当我记录RecycerView的适配器大小时,可