package moe.feng.nhentai.ui.adapter; import android.graphics.Bitmap; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import moe.feng.nhentai.R; import moe.feng.nhentai.api.BookApi; import moe.feng.nhentai.model.Book; import moe.feng.nhentai.ui.common.AbsRecyclerViewAdapter; import moe.feng.nhentai.util.AsyncTask; public class BookPreviewGridAdapter extends AbsRecyclerViewAdapter { private Book book; public BookPreviewGridAdapter(RecyclerView rv, Book book) { super(rv); this.book = book; } @Override public void onViewRecycled(ClickableViewHolder holder) { super.onViewRecycled(holder); ((ViewHolder) holder).mBookImageView.setImageBitmap(null); ((ViewHolder) holder).mBookImageView.invalidate(); } @Override public ClickableViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { bindContext(parent.getContext()); return new ViewHolder( LayoutInflater .from(getContext()) .inflate(R.layout.list_item_book_picture_thumb, parent, false) ); } @Override public void onBindViewHolder(ClickableViewHolder cvh, int position) { super.onBindViewHolder(cvh, position); if (cvh instanceof ViewHolder) { ViewHolder holder = (ViewHolder) cvh; holder.mBookImageView.setVisibility(View.INVISIBLE); String text = Integer.toString(position + 1); holder.mNumberText.setText(text); new ImageDownloader().execute(holder.getParentView(), position + 1); } } @Override public int getItemCount() { return book.pageCount; } public class ViewHolder extends AbsRecyclerViewAdapter.ClickableViewHolder { ImageView mBookImageView; TextView mNumberText; public ViewHolder(View itemView) { super(itemView); this.mBookImageView = (ImageView) itemView.findViewById(R.id.image_view); this.mNumberText = (TextView) itemView.findViewById(R.id.number_text); itemView.setTag(this); } } private class ImageDownloader extends AsyncTask<Object, Object, Void> { @Override protected Void doInBackground(Object[] params) { View v = (View) params[0]; ViewHolder h = (ViewHolder) v.getTag(); ImageView imageView = h.mBookImageView; Bitmap img = BookApi.getPageThumb(getContext(), book, (int) params[1]); if (img != null) { publishProgress(v, img, imageView, book, params[1]); } return null; } @Override protected void onProgressUpdate(Object[] values) { super.onProgressUpdate(values); View v = (View) values[0]; if (!(v.getTag() instanceof ViewHolder)) { return; } ViewHolder vh = (ViewHolder) v.getTag(); if (!vh.mNumberText.getText().equals(Integer.toString((int) values[4]))) { return; } Bitmap img = (Bitmap) values[1]; ImageView imageView = (ImageView) values [2]; imageView.setVisibility(View.VISIBLE); imageView.setTag(false); imageView.setImageBitmap(img); imageView.invalidate(); } } }