У меня есть приложение для Android, в котором есть галерея сетки. На этом экране сетки я показываю изображения в полноэкранном режиме, когда пользователь нажимает на изображение. Это работает очень хорошо. Но проблема в виде сетки показывает изображения правильно, когда они появляются на экране в первый раз, но порядок меняется случайным образом, когда пользователь прокручивает его вниз, чтобы увидеть больше изображений. Вот мой код ниже для адаптеров, и вы можете взглянуть на фотографии.Порядок изображений в Grid View в Android
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