package com.halzhang.android.example.glideexample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import com.bumptech.glide.GenericRequestBuilder; import com.bumptech.glide.Glide; import com.bumptech.glide.ListPreloader; import com.crashlytics.android.Crashlytics; import io.fabric.sdk.android.Fabric; import java.util.ArrayList; import java.util.List; /** * How to use {@link com.bumptech.glide.ListPreloader} * * @author halzhang.github.io */ public class MainActivity extends AppCompatActivity { private static final String LOG_TAG = MainActivity.class.getSimpleName(); private ListView listView; private ArrayList<MyModel> models = new ArrayList<>(0); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fabric.with(this, new Crashlytics()); setContentView(R.layout.activity_main); //TODO init views listView.setOnScrollListener(listPreloader); } private class MyModel { public String imgUrl; } private ListPreloader listPreloader = new ListPreloader<MyModel>(new ListPreloader.PreloadModelProvider<MyModel>() { @Override public List<MyModel> getPreloadItems(int position) { List<MyModel> preloads = new ArrayList<>(1); preloads.add(models.get(position)); return preloads; } @Override public GenericRequestBuilder getPreloadRequestBuilder(MyModel item) { return Glide.with(MainActivity.this).load(item.imgUrl); } }, new ListPreloader.PreloadSizeProvider<MyModel>() { @Override public int[] getPreloadSize(MyModel item, int adapterPosition, int perItemPosition) { return new int[]{500, 500}; } }, 3); }