我有一個android應用程序,它有一個網格視圖庫。在此網格視圖中,當用戶單擊圖像時,我將全屏顯示圖像。它工作得很好。但問題是網格視圖會在第一次顯示圖像時正確顯示圖像,但當用戶向下滾動以查看更多圖像時,順序會隨機更改。這是我的代碼下面的適配器,你可以看看圖片。Android中Grid View中圖像的順序
public class GridGallery extends BaseAdapter {
Context context;
public GridGallery(Context context) {
this.context = context;
}
@Override
public int getCount() {
return urlList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
ImageView view;
if(convertView == null) {
view = new ImageView(context);
view.setScaleType(ImageView.ScaleType.FIT_CENTER);
view.setLayoutParams(new GridView.LayoutParams(screenWidth/4, screenHeight/4));
view.setAdjustViewBounds(false);
view.setPadding(2, 2, 2, 2);
imageLoader.DisplayImage(urlList.get(position), view);
System.gc();
}else {
view = (ImageView) convertView;
}
System.gc();
return view;
}
}
在這裏,我怎麼設置低於適配器,
GridView g = (GridView) findViewById(R.id.myGrid);
g.setAdapter(new GridGallery(context));
isGalleryVisible = false;
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
myPagerAdapter = new MyPagerAdapter(context);
pager = (ViewPager) findViewById(R.id.gallery_view);
pager.setAdapter(myPagerAdapter);
pager.setCurrentItem(position);
isGalleryVisible = true;
}
});
這裏是我的屏幕截圖,它重演,當我把它的滾動。每當我向下滾動並返回頂部時,他們的位置都會隨機變化。
任何幫助將不勝感激。提前致謝。
感謝的人,接受你的解答的答案。我想問一些與此相關的其他內容,這個網格視圖很慢,是不是也一樣?你知道我該如何加快速度? – osayilgan
我不確定。但是當我嘗試使用巨大分辨率的圖像時,我遇到了一個問題。嘗試縮放它。無論如何,BCoz網格會有很小的寬度和高度,爲什麼要使用巨大的圖像。 –
實際上我使用的是小圖片,而我發現了這個問題。這是因爲垃圾收集。由於Fedor的延遲加載使用弱引用,調用System.gc()會殺死內存緩存。這就是爲什麼Adapter每次滾動時都試圖創建它們的原因。 – osayilgan