我尝试使用网格视图创建一个适配器包含图像的列表。 我还将onscrolllistener设置为无穷无尽的列表。 但问题是当我滚动时,已经加载的图像再次从服务器加载。
这是我的代码:
public class ListProductLama extends Activity{
ArrayList<listBarang> list=new ArrayList<listBarang>();
ArrayList<listBarang> temp=new ArrayList<listBarang>();
ListAdapter adapter;
int itemsPerPage = 4;
int itemLoaded=0;
boolean loadingMore = false;
boolean full=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.adapter);
Context ctx = getApplicationContext();
adapter=new ListAdapter(ctx, R.layout.adapterlist,list);
ParsingXML parse=new ParsingXML(this, constant.GET_LIST_PRODUCT);
parse.parse();
ListProductHandler handler=(ListProductHandler)parse.getMyExampleHandler();
ParsedListProductDataSet a=handler.getParsedData();
list=a.getList();
GridView grid=(GridView)findViewById(R.id.gridView1);
grid.setAdapter(adapter);
grid.setOnScrollListener(new OnScrollListener(){
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if(!(full)){
int lastInScreen = firstVisibleItem + visibleItemCount;
if((lastInScreen == totalItemCount) && !(loadingMore)){
Thread thread = new Thread(null, loadMoreListItems);
thread.start();
}
}
}
});
}
//Runnable untuk load the items
private Runnable loadMoreListItems = new Runnable() {
@Override
public void run() {
loadingMore = true;
//Reset the array that holds the new items
temp=new ArrayList<listBarang>();
if(itemLoaded+itemsPerPage>=list.size()){
itemsPerPage=list.size()-itemLoaded;
full=true;
}
int index=itemLoaded;
for (int i = 0; i < itemsPerPage; i++) {
temp.add(list.get(index));
index++;
}
runOnUiThread(returnRes);
}
};
private Runnable returnRes = new Runnable() {
@Override
public void run() {
//Loop through the new items and add them to the adapter
if(temp != null && temp.size() > 0){
for(int i=0;i<temp.size();i++)
adapter.add(temp.get(i));
}
adapter.notifyDataSetChanged();
itemLoaded+=itemsPerPage;
loadingMore = false;
}
};
}
任何人都可以帮助我吗?