2

am developing an app that prefetch the list of images before scrolling occurs in recyclerview. I tried using prefetchToBitmapCache as suggested. But its not working out. Please suggest me what is going wrong in the below code. How it loads the images in prior before set to the adapter.

  private void prepareMovieData() {

    Movie movie = new Movie("https://i.pinimg.com/736x/97/5d/42/975d42c0fded9edfbd7aace45a52534e--crossover-cartoons.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/736x/57/2d/a4/572da4b27e9e41bca5f74a5a7358f965--iphone-wallpaper-wallpaper-doraemon.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/e3/16/9b/e3169b4d7baa13739c0e3fa00b493562.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/94/9f/ee/949fee0b6e6fae851fa0e3a062c7c506.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/5a/b9/91/5ab9913ab76af885faecb02d21423a6e.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/736x/d0/20/20/d020203c6485fa0a03509b9a2ad6e051--comic-movies-comic-books.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/9f/c1/f9/9fc1f96aebd1357049e64cb84266c065.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/4a/86/50/4a865068fa0a4780e7725088331079aa.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/7a/1d/52/7a1d52974db26b9aec65d33123751e7d.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    movie = new Movie("https://i.pinimg.com/originals/f9/b3/93/f9b393df3acfde39504d20045c085f60.jpg", "Animation, Kids & Family");
    movieList.add(movie);

    new DoPrefetchTask().execute();
}

DoPrefetchTask

public class DoPrefetchTask extends AsyncTask<String, Void, String> {
    ProgressDialog ceProgressDialogs;

    DoPrefetchTask() {
        ceProgressDialogs = new ProgressDialog(MainActivity.this);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        ceProgressDialogs.show();
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            ImagePipeline imagePipeline = Fresco.getImagePipeline();
            for (Movie uri : movieList) {                    imagePipeline.prefetchToBitmapCache(ImageRequest.fromUri(uri.img), null);
            }
        } catch (Exception e) {
            android.util.Log.d("Error Gracevenkat 123", "" + e.toString());
        }
        return null;
    }
    @Override
    protected void onPostExecute(String result) {

        if (MainActivity.this != null && !isFinishing() && ceProgressDialogs != null) {
            ceProgressDialogs.dismiss();
            mAdapter.update(movieList);

        }
    }
}

My Adapter onBindViewHolder:

  @Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    Movie movie = moviesList.get(position);
    holder.title.setText(movie.txt);
holder.imageView.setImageURI(Uri.parse(movie.img));

}

Grace Venkat
  • 189
  • 1
  • 10

0 Answers0