2017-11-14 22 views
-6

우선, 저는 초보자이며 이것은 당신을위한 어리석은 질문 일 수 있습니다. recyclerview에서 이미지를로드하려면 다음 코드에 컨텍스트를 전달해야합니다. 몇 가지 옵션을 시도했지만 그 중 어떤 것도 성공하지 못했습니다. 내 문제는 다음 코드에서 전달할 컨텍스트를 찾는 방법입니다. Picasso and context피카소 - "컨텍스트"를 찾을 수 없습니다

도움을 기대 -하기 : 여기

Picasso.with(context here).load("http://i.imgur.com/DvpvklR.png").into(thumbnail); 

는 문제를 일으키는 전체 코드가 너무 다음

public class WishListAdapter extends RecyclerView.Adapter<WishListAdapter.DerpHolder> { 

    private List<WishListItem> listData; 
    private LayoutInflater inflater; 

    public WishListAdapter(List<WishListItem> listData, Context c) { 
     inflater = LayoutInflater.from(c); 
     this.listData = listData; 
    } 

    @Override 
    public WishListAdapter.DerpHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.wish_list_item, parent, false); 
     return new DerpHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(DerpHolder holder, int position) { 

    } 

    public void setListData(ArrayList<WishListItem> exerciseList) { 
     this.listData.clear(); 
     this.listData.addAll(exerciseList); 
    } 

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

    class DerpHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     ImageView thumbnail; 
     TextView title; 
     TextView subTitle; 
     View container; 


     public DerpHolder(View itemView) { 
      super(itemView); 
      thumbnail = itemView.findViewById(R.id.im_item_icon); 

      //subTitle = itemView.findViewById(R.id.lbl_item_sub_title); 

      //title = itemView.findViewById(R.id.lbl_item_text); 

      container = itemView.findViewById(R.id.cont_item_root); 
      container.setOnClickListener(this); 
      Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(thumbnail); 
     } 

     @Override 
     public void onClick(View v) { 
      Log.d("janitha", "item clicked"); 

     } 
또한

내가 읽고 (내가 recyclerview에 이미지를 전달하기 위해 노력하고 있어요)입니다 누군가로부터, 미리 감사드립니다.

답변

0

생성자의 컨텍스트를 저장하지 않았습니다. 이 같은 등 수행

public class WishListAdapter extends 
    RecyclerView.Adapter<WishListAdapter.DerpHolder> { 

    private List<WishListItem> listData; 
    private LayoutInflater inflater; 
    Context context; 

    public WishListAdapter(List<WishListItem> listData, Context c) { 
     inflater = LayoutInflater.from(c); 
     this.listData = listData; 
     this.context = c; 
    } 

    @Override 
    public WishListAdapter.DerpHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.wish_list_item, parent, false); 
     return new DerpHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(DerpHolder holder, int position) { 

    } 

    public void setListData(ArrayList<WishListItem> exerciseList) { 
     this.listData.clear(); 
     this.listData.addAll(exerciseList); 
    } 

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

    class DerpHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     ImageView thumbnail; 
     TextView title; 
     TextView subTitle; 
     View container; 


     public DerpHolder(View itemView) { 
      super(itemView); 
      thumbnail = itemView.findViewById(R.id.im_item_icon); 

      //subTitle = itemView.findViewById(R.id.lbl_item_sub_title); 

      //title = itemView.findViewById(R.id.lbl_item_text); 

      container = itemView.findViewById(R.id.cont_item_root); 
      container.setOnClickListener(this); 
      Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(thumbnail); 
     } 

     @Override 
     public void onClick(View v) { 
      Log.d("janitha", "item clicked"); 

     } 
+0

정말 도움이 , 고맙습니다 –

1

시도,

this.context = c; 

private Context context; 

하고 생성자

가, 지금은 매개 변수로 '맥락'을 사용할 수 있습니다.

Picasso.with(mContext).load("http://i.imgur.com/DvpvklR.png").into(thumbnail); 
1

는 다음과 같은 코드를 수정

public class WishListAdapter extends RecyclerView.Adapter<WishListAdapter.DerpHolder> { 

    private List<WishListItem> listData; 
    private LayoutInflater inflater; 
    private Context context 

    public WishListAdapter(List<WishListItem> listData, Context c) { 
     inflater = LayoutInflater.from(c); 
     this.listData = listData; 
     this.context = c; 
    } 

    @Override 
    public WishListAdapter.DerpHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.wish_list_item, parent, false); 
     return new DerpHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(DerpHolder holder, int position) { 

    } 

    public void setListData(ArrayList<WishListItem> exerciseList) { 
     this.listData.clear(); 
     this.listData.addAll(exerciseList); 
    } 

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

    class DerpHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     ImageView thumbnail; 
     TextView title; 
     TextView subTitle; 
     View container; 


     public DerpHolder(View itemView) { 
      super(itemView); 
      thumbnail = itemView.findViewById(R.id.im_item_icon); 

      //subTitle = itemView.findViewById(R.id.lbl_item_sub_title); 

      //title = itemView.findViewById(R.id.lbl_item_text); 

      container = itemView.findViewById(R.id.cont_item_root); 
      container.setOnClickListener(this); 
      Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(thumbnail); 
     } 

     @Override 
     public void onClick(View v) { 
      Log.d("janitha", "item clicked"); 

     } 
0

아래와 같은 컨텍스트 변수를 선언하고 사용하십시오 :

private List<WishListItem> listData; 
private LayoutInflater inflater; 
private Context mContext; 

public WishListAdapter(List<WishListItem> listData, Context c) { 
    inflater = LayoutInflater.from(c); 
    this.listData = listData; 
    this.mContext = c; 
} 

그런 피카소mContext를 사용