У меня есть CustomGrid
для каталога продукции. Данные для Grid хранятся локально. Текст поступает из локального файла JSON, и изображения также хранятся под res
.Android - Gridview ведет себя сумасшедшим
При отображении GridView 300 элементов расположены неправильно. Они повторяются после 20 записей, и они смешиваются, когда я просматриваю вверх и вниз.
Я отлаживал массивы данных, но они выглядят отлично. У меня также есть тот же путь для каждого элемента прямо сейчас. Поэтому каждый элемент Gridview имеет одинаковое изображение. Но это не отличается от поведения GridView.
У меня нет проблем на других Gridviews с гораздо меньшим количеством предметов. Я читал о ленивой загрузке, но я не загружаю файлы с изображениями
Почему эта сетка ведет себя так? Слишком много перегрузки? Как я могу решить эту проблему?
EDIT:
CustomGrid:
public class CustomGrid extends BaseAdapter{
private Context mContext;
private final String[] gridItemText;
private final int[] imageID;
public CustomGrid(Context c, String[] gridItemText, int[] imageID){
mContext = c;
this.gridItemText = gridItemText;
this.imageID = imageID;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return gridItemText.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
//grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_single_main, null);
TextView textView = (TextView) grid.findViewById(R.id.grid_single_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_single_image);
textView.setText(gridItemText[position]);
imageView.setImageResource(imageID[position]);
} else {
grid = (View) convertView;
}
return grid;
}
}
активность:
CustomGrid adapter = new CustomGrid(ProductCatalogActivity.this, menuData, imagePath);
gridView1=(GridView)findViewById(R.id.grid_Main);
gridView1.setAdapter(adapter);
gridView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//ToDo
}
});
Не могли бы вы добавить код – raktale
Я добавил соответствующий код – Mike