티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

How to get a context in a recycler view adapter

리사이클러뷰 어댑터에서 컨텍스트(Context)를 가져오는 방법

 문제 내용 

I'm trying to use picasso library to be able to load url to imageView, but I'm not able to get the context to use the picasso library correctly.

저는 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();
    }

}

 

 

 높은 점수를 받은 Solution 

You have a few options here:

여기에는 몇 가지 옵션이 있습니다:

 

  1. Pass Context as an argument to FeedAdapter and keep it as class field
  2. Use dependency injection to inject Context when you need it. I strongly suggest reading about it. There is a great tool for that -- Dagger by Square
  3. Get it from any View object. In your case this might work for you:As pub_image is a ImageView.
  4. holder.pub_image.getContext()
1. FeedAdapter에 Context를 인수로 전달하고 클래스 필드로 유지합니다.
2. 필요할 때 Context를 주입하는 종속성 주입을 사용합니다. 강력히 읽어보는 것을 권장합니다. Square의 Dagger와 같은 좋은 도구가 있습니다.
3. ImageView인 pub_image를 사용하여 얻을 수 있습니다.
4. holder.pub_image.getContext()

 

 

 

 가장 최근 달린 Solution 

View mView;
mView.getContext();

 

 

출처 : https://stackoverflow.com/questions/32136973/how-to-get-a-context-in-a-recycler-view-adapter

반응형
댓글
공지사항
최근에 올라온 글