Volley.newRequestQueue()
の中でどのパラメータを渡すべきですか? 私はRecyclerViewAdapterクラスでこれを使用しています。以下のコードを参照してくださいonBindViewHolder()AndroidのRecyclerViewAdapter内のvolleyの画像を読み込み中
これは私が知っているどんな活動にもかかわらず、this
が渡されました。
RecyclerViewAdapter.java
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {
List<ListModel> myArrayList = new ArrayList<>();
public RecyclerViewAdapter(ArrayList<ListModel> myArrayList) {
this.myArrayList = myArrayList;
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_row, parent, false);
RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view);
return recyclerViewHolder;
}
@Override
public void onBindViewHolder(final RecyclerViewHolder holder, int position) {
ListModel listModel = myArrayList.get(position);
holder.videoID.setText(listModel.getVideoID());
holder.title.setText(listModel.getTitle());
holder.dateAdded.setText(listModel.getDateAdded());
//
String url = "http://img.youtube.com/vi/"+listModel.getVideoID()+"/0.jpg";
if (url != null) {
RequestQueue queue = Volley.newRequestQueue();
// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
//imageView.setImageBitmap(bitmap);
holder.thumbnail.setImageBitmap(bitmap);
}
}, 0, 0, null,
new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
//imageView.setImageResource(R.mipmap.ic_launcher);
}
});
queue.add(request);
}
//
}
@Override
public int getItemCount() {
return myArrayList.size();
}
public static class RecyclerViewHolder extends RecyclerView.ViewHolder {
TextView videoID, title, dateAdded;
ImageView thumbnail;
public RecyclerViewHolder(View itemView) {
super(itemView);
videoID = (TextView) itemView.findViewById(R.id.tvVideoID);
title = (TextView) itemView.findViewById(R.id.tvTitle);
dateAdded = (TextView) itemView.findViewById(R.id.tvDateAdded);
thumbnail = (ImageView) itemView.findViewById(R.id.ivThumbnail);
}
}
}
私は画像をロードするためにバレーボールライブラリを使用しています。私はすでにバックグラウンドスレッドでロード作業をしていると思います。したがって、ここではユーザーエクスペリエンスには効果がありません。 私が間違っている場合は私を修正してください。 – akkk
まあ、私はあなたを訂正します。笑!私が強調しようとしているのは、AndroidシステムがRecyclerViewAdapterを作成する前に、イメージをダウンロードする必要があるということです。ここであなたのコードが異なるのは、onBindViewHolderが呼び出されたときにのみ、どのイメージが必要かを判断し、ダウンロードする作業を行うためです。アダプタが作成される前に、これらのイメージが必要であり、ダウンロードする必要があります(真にすぐに使用できるようにするため)。 – apelsoczi
以前の例ではPicassoライブラリを使用していますが、例として、NetworkPolicy.OFFLINEを85行目に指定しています。https://github.com/apelsoczi/Popular_Movies/blob/master/app /src/main/java/com/pelsoczi/popularmovies/ui/Adapter.java。 https://github.com/apelsoczi/Popular_Movies/blob/master/app/src/main/java/com/pelsoczi/popularmovies/ui/MovieFragment.javaから180行目を表示することもできます。ここではデータをダウンロードしていますAsyncTaskとonPostExecuteが1回発生すると、私はrecyclerviewを更新します – apelsoczi