Używam uniwersalnego programu ładującego obrazy do wyświetlania obrazów kciuka w widoku listy. Zaimplementowałem podstawowe kroki w adapterze i wszystko działa. Problem polega na tym, że mam 10 pozycji na liście i widzę pierwszych 5, jak tylko przewijam w dół nowe obrazy są wyświetlane, ale kiedy przewijam do góry, obrazy są zastępowane ponownie raz, co chcę, to pierwsze 5 obrazów, które są pokazane na początku, nie należy ich zastępować. Tak więc, kiedy przewijam w górę iw dół, obrazy nie są zastępowane raz za razem.ListView podobnie jak w uniwersalnej aplikacji przykładowego programu ładującego obrazki
Tak jak w przypadku przykładowej aplikacji ListActivity, obrazy po załadowaniu nie są zastępowane podczas przewijania w górę.
Oto kod
klasy Application
public class MyApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
// Create default options which will be used for every
// displayImage(...) call if no options will be passed to this method
DisplayImageOptions displayimageOptions = new DisplayImageOptions.Builder().cacheInMemory().cacheOnDisc().build();
// Create global configuration and initialize ImageLoader with this configuration
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()).
defaultDisplayImageOptions(displayimageOptions).build();
ImageLoader.getInstance().init(config);
}
}
Adapter
public class CarListAdapter extends BaseAdapter {
private ArrayList<CarDetail> items = new ArrayList<CarDetail>();
private Context context;
private ImageLoader imageLoader;
private ImageLoadingListener animateFirstDisplayListener;
public CarListAdapter(Context context , ArrayList<CarDetail> items , ImageLoadingListener animateFirstDisplayListener) {
super();
this.context = context;
this.items = items;
this.animateFirstDisplayListener = animateFirstDisplayListener;
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return items.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.d("Inside", "GetView");
LayoutInflater mInflater = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
ViewHolder holder = null;
final CarDetail car = items.get(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.car_list_row, parent , false);
holder = new ViewHolder();
holder.tvCarName = (TextView) convertView.findViewById(R.id.tvCarName);
holder.tvDailyPriceValue = (TextView) convertView.findViewById(R.id.tvDailyPriceValue);
holder.tvWeeklyPriceValue = (TextView) convertView.findViewById(R.id.tvWeeklyPriceValue);
holder.tvWeekendPriceValue = (TextView) convertView.findViewById(R.id.tvWeekendPriceValue);
holder.imgCar = (ImageView) convertView.findViewById(R.id.imgCar);
holder.btnBookNow = (Button) convertView.findViewById(R.id.btnBookNow);
holder.btnBookNow.setFocusable(false);
holder.btnBookNow.setFocusableInTouchMode(false);
holder.btnBookNow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(context , BookingFormActivity.class);
intent.putExtra("car_name", car.getCarName());
intent.putExtra("min_age", car.getMinimumAge());
context.startActivity(intent);
}
});
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvCarName.setText(car.getCarName());
holder.tvDailyPriceValue.setText(car.getDailyPrice());
holder.tvWeeklyPriceValue.setText(car.getWeeklyPrice());
holder.tvWeekendPriceValue.setText(car.getWeekendPrice());
imageLoader.displayImage(car.getThumbUrl(), holder.imgCar, animateFirstDisplayListener);
return convertView;
}
static class ViewHolder {
TextView tvCarName;
TextView tvDailyPriceValue;
TextView tvWeeklyPriceValue;
TextView tvWeekendPriceValue;
ImageView imgCar;
Button btnBookNow;
}
}
Proponuję użyć leniwy listy adapter – blganesh101
dowolny link byłoby pomocne – Ravi