无法在 android 中解析毕加索的上下文

Can't resolve context for picasso in android

我有一个自定义适配器,其中包含来自 json 的数据,包括图像 url。问题是我在 onBindViewHolder() ...

中的上下文值上得到 "can't resolve symbol"
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {

    ClubFieldsModel value = Items.get(i);
    //Uri uri = Uri.parse(value.getFieldImageThumb().toString());
    viewHolder.title.setText(value.getTitle());
    viewHolder.desc.setText(value.getDesc());
    String imageUrl = value.getFieldImageThumb();

   //context "can't resolve symbol" error ...
   Picasso.with(context).load(imageUrl).into(viewHolder.field_image_thumb);

}

看不出为什么会存在这个问题,一切都已初始化..

编辑:完整适配器代码..

package app.sync.myapp.adapters;

import android.net.Uri;
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 com.squareup.picasso.Picasso;

import java.net.URI;
import java.util.List;


import app.sync.myapp.R;
import app.sync.myapp.model.ClubFieldsModel;

import static android.support.v7.appcompat.R.id.action_context_bar;
import static android.support.v7.appcompat.R.id.image;
import static app.sync.myapp.R.id.field_image_thumb;

public class ClubFieldsAdapter extends RecyclerView.Adapter<ClubFieldsAdapter.ViewHolder> {

List<ClubFieldsModel> Items;

public ClubFieldsAdapter(List<ClubFieldsModel> Items) {
    this.Items = Items;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.club_fields_item, viewGroup, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {

    ClubFieldsModel value = Items.get(i);
    //Uri uri = Uri.parse(value.getFieldImageThumb().toString());
    viewHolder.title.setText(value.getTitle());
    viewHolder.desc.setText(value.getDesc());
    String imageUrl = value.getFieldImageThumb();

     Picasso.with(context).load(imageUrl).into(viewHolder.field_image_thumb);

}

@Override
public int getItemCount() {
    return Items.size();
}

class ViewHolder extends RecyclerView.ViewHolder {

    public ImageView field_image_thumb;
    public TextView title;
    public TextView desc;

    public ViewHolder(View itemView) {

        super(itemView);
        title = (TextView) itemView.findViewById(R.id.title);
        desc = (TextView) itemView.findViewById(R.id.desc);
        field_image_thumb = (ImageView) itemView.findViewById(R.id.field_image_thumb);
        }
    }
}

您可以使用 viewHolder.itemView.getContext(),其中 itemView 是您扩充的视图 onCreateViewHolder。看看here。例如

 Picasso.with(viewHolder.itemView.getContext()).load(imageUrl).into(viewHolder.field_image_thumb);

Picasso — 适配器使用(ListView、GridView、...) https://futurestud.io/tutorials/picasso-adapter-use-for-listview-gridview-etc

您需要将上下文发送到适配器的构造函数。将其更改为:

private Context context;

public ClubFieldsAdapter(List<ClubFieldsModel> Items, Context context) {
this.Items = Items;
this.context = context;
}

并在调用适配器时添加上下文 Class。