티스토리 뷰
반응형
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:
여기에는 몇 가지 옵션이 있습니다:
- Pass
Context
as an argument to FeedAdapter and keep it as class field - 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 - Get it from any
View
object. In your case this might work for you:Aspub_image
is aImageView
. 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
반응형
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드용 차트(그래프) 모음 (0) | 2023.01.31 |
---|---|
화면 회전시 안드로이드 WebView 재로드 방지하기 (0) | 2023.01.30 |
Android에서 visibility 변경시 애니메이션 적용하기 (0) | 2023.01.30 |
Android Fragment에서 'no view found for ID' 오류 수정하기 (0) | 2023.01.30 |
프래그먼트와 그것을 포함하는 액티비티 간에 데이터를 전달하는 방법 (0) | 2023.01.29 |
댓글
공지사항
최근에 올라온 글