package com.ztspeech.simutalk2.net;
import java.lang.ref.WeakReference;
import android.graphics.Bitmap;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ImageView;
import android.widget.ListView;
import com.ztspeech.simutalk2.dictionary.util.LogInfo;
/**
* Ϊ���Թ�һ��������ͼƬ,listviewʹ�ô����ȡͼƬ
*
*/
public class ListViewImageEngine implements OnScrollListener {
ListView listview;
WeakReference<Bitmap> bitmapReference = null;
public ListViewImageEngine(ListView listview) {
this.listview = listview;
this.listview.setOnScrollListener(this);
}
/**
* ��ʾԭͼ
*/
public void imageLoader(ImageView v, String imageId, int defaultDrawableId, int pos) {
ImageEngine.setImageBitmap(imageId, v, defaultDrawableId, pos);
}
/**
* ��ʾ����ͼ
*/
public void imageLoaderScale(ImageView v, String imageId, int defaultDrawableId, int pos) {
ImageEngine.setImageBitmapScale(imageId, v, defaultDrawableId, pos);
}
// ---------------------------------------------------------------
private void loadImage() {
int start = listview.getFirstVisiblePosition();
int end = listview.getLastVisiblePosition();
if (end >= listview.getCount()) {
end = listview.getCount() - 1;
}
ImageEngine.setLoadLimit(start, end);
ImageEngine.unlock();
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
LogInfo.LogOut("list", "-------------SCROLL_STATE_FLING");
ImageEngine.lock();
break;
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
LogInfo.LogOut("list", "-------------SCROLL_STATE_IDLE");
loadImage();
break;
case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
LogInfo.LogOut("list", "--------------SCROLL_STATE_TOUCH_SCROLL");
ImageEngine.lock();
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
}