Ich versuche, die Picasso-Bibliothek zu verwenden, um eine URL in imageView laden zu können, aber ich kann context
die Picasso-Bibliothek nicht richtig verwenden.
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();
}
}
java
android
android-recyclerview
picasso
android-context
Fremder B.
quelle
quelle
ApplicationContext
und nicht an die Aktivität gebunden sein, was zu einem Laufzeitabsturz innerhalb von Glide führt.Sie können eine globale Variable hinzufügen:
Weisen Sie dann den Kontext von hier aus zu:
Happy Codding :)
quelle
onDetachedFromRecyclerView
oder so.Kurze Antwort:
Erklärung, warum andere Antworten nicht großartig sind:
Context
an den Adapter ist völlig unnötig, daRecyclerView
Sie innerhalb der Klasse darauf zugreifen könnenContext
aufViewHolder
Ebene bedeutet, dass Sie dies jedes Mal tun, wenn Sie eine binden oder erstellenViewHolder
. Sie duplizieren Operationen.Activity
Lebensdauer verweilt (was seltsam wäre), haben Sie bereits ein Leck.quelle
onDetachedFromRecyclerView()
Kontext implementieren und freigeben?Sie können pub_image context (
holder.pub_image.getContext()
) verwenden:quelle
Sie können definieren:
Und bei der
onCreate
Initialisierungctx
zu:Hinweis: Übergeordnet ist eine ViewGroup.
quelle
Zuerst global deklarieren
Context mContext;
Übergeben Sie den Kontext mit dem Konstruktor, indem Sie ihn ändern.
mContext
Verwenden Sie dann das, wo immer Sie es brauchenquelle
Sie können wie folgt view.getContext () verwenden
Beispiel
quelle
Sie können dies verwenden:
quelle
Erstellen Sie einen Konstruktor von FeedAdapter:
und in Aktivität
quelle
Fügen Sie zuerst eine globale Variable hinzu
Ändern Sie dann Ihren Konstruktor in diesen
Übergeben Sie Ihren Kontext beim Erstellen des Adapters.
quelle
quelle