大佬教程收集整理的这篇文章主要介绍了android-asynctask – 带有asyncTask的Recyclerview适配器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在MainActivity的AsyncTask中:
@Override protected void onPostExecute(String result) { json_result = result; super.onPostExecute(result); dialog.dismiss(); if (result == null) { Toast.makeText(MainActivity.this,"error getTing results...",Toast.LENGTH_LONG).show(); } else { try { JSONObject json = new JSONObject(result); Log.e(tag,"create json object"); JSONArray searchArray = json.getJSONArray("Search"); Log.e(tag,"Search"); for (int i = 0; i < searchArray.length(); i++) { Log.e(tag,"run on length"); JSONObject searchObject = searchArray.getJSONObject(i); Log.e(tag,"create search object"); String title = searchObject.getString("title"); Log.e(tag,"title" + titlE); String type = searchObject.getString("Type"); Log.e(tag,"Type" + typE); String year = searchObject.getString("Year"); Log.e(tag,"Year" + year); String imdbID = searchObject.getString("imdbID"); String poster = searchObject.getString("Poster"); Log.e(tag,"" + result); movieList.add(new Movie(title,type,year,imdbID,poster)); Log.e(tag,"Add to adapter"); } } catch (JSONException E) { e.printStackTrace(); Toast.makeText(MainActivity.this,"error parsing results...",Toast.LENGTH_LONG).show(); } adapter.notifyDataSetChanged(); Log.e(tag,"Notify"); } }
定制适配器:
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { private LruCache<String,Bitmap> bitmapCache; Context context; public static class ViewHolder extends RecyclerView.ViewHolder { public TextView title; public TextView year; public TextView type; public ImageView poster; public ViewHolder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.txt_titlE); year = (TextView) itemView.findViewById(R.id.txt_year); type = (TextView) itemView.findViewById(R.id.txt_rating); poster = (ImageView) itemView.findViewById(R.id.imageView); } } private List<Movie> mList; public Adapter(List<Movie> mList) { this.mList = mList; int numImages = 4 * 1024 * 1024; this.bitmapCache = new LruCache<String,Bitmap>(numImages) { @Override protected int sizeOf(String key,Bitmap value) { // this is how to calculate a bitmap size in bytes. // (bytes-in-a-row * height) return value.getRowBytes() * value.getHeight(); } }; } @Override public Adapter.ViewHolder onCreateViewHolder (ViewGroup parent,int viewTypE) { Context context = parent.getContext(); LayoutInflater inflater = LayoutInflater.from(context); View movieView = inflater.inflate(R.layout.card_view,parent,falsE); ViewHolder viewHolder = new ViewHolder(movieView); return viewHolder; } @Override public void onBindViewHolder (Adapter.ViewHolder holder,int position) { Movie movie = mList.get(position); holder.title.setText(movie.gettitle()); holder.year.setText(movie.getYear()); holder.type.setText(movie.getType()); holder.poster.setVisibility(View.INVISIBLE); GetImageTask task = new GetImageTask(movie,holder); task.execute(movie.getPoster_url()); } @Override public int getItemCount() { return mList.size(); } class GetImageTask extends AsyncTask<String,Void,Bitmap> { private final Movie movie; private final ViewHolder holder; public GetImageTask(Movie movie,ViewHolder holder) { this.movie = movie; this.holder = holder; } @Override protected Bitmap doInBACkground(String... params) { //download: String address = params[0]; Bitmap bitmap = httpHandler.getBitmap(address,null); //save it in the cache for later: if (bitmap != null) { bitmapCache.put(address,bitmap); } return bitmap; } @Override protected void onPostExecute(Bitmap result) { if (movie.equals(holder.poster)) { holder.poster.setVisibility(View.VISIBLE); holder.poster.setImageBitmap(result); } } }
}
我认为问题是我的电影类是空的,但我确实在asynctask中有JSON结果…
>在主类中初始化回收器视图
>初始化适配器并将movielist作为arguement传递给创建的适配器对象.
>将适配器连接到recyclerview – > recyclerView.setAdapter(适配器).
我认为这应该有效
以上是大佬教程为你收集整理的android-asynctask – 带有asyncTask的Recyclerview适配器全部内容,希望文章能够帮你解决android-asynctask – 带有asyncTask的Recyclerview适配器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。