У меня есть GridView, который используется для отображения сетки изображений. Под каждым изображением находится поле EditText.
Идентификаторы изображений предварительно загружены в массив, чтобы их мог поддерживать метод getView () моего пользовательского класса BaseAdapter.
Однако, когда пользователь нажимает на любое из полей EditText, порядок изображений резко меняется (с «Recall Initial» на «Recall Adjust» на рисунке ниже).
Что-то происходит за кулисами, когда пользователь нажимает на editText, который заставляет позиционирование элементов вида сетки становиться беспорядочным?
Игра представляет собой игру на запоминание. Пользователю представляется несколько рядов изображений (MEM), а затем изображения в каждом ряду скремблируются. Таким образом, изначально все выглядит правильно в «Recall Initial», но изображения меняются, когда я нажимаю на EditText.
Изображения загружаются с использованием:
public void loadImages() {
images = new int[numItems];
String imgName;
if (gameType == SHAPES_FACES)
imgName = "face";
else
imgName = "image";
for (int i=0; i<numItems; i++) {
int id = getResources().getIdentifier(imgName+i, "drawable", getPackageName());
images[i] = id;
}
images = Utils.shuffleIntArray(images);
}
И изображения обрабатываются в моем пользовательском классе BaseAdapter:
private class ShapeAdapter extends BaseAdapter {
public ShapeAdapter(Context context) { }
public int getCount() { return numItems; }
public Object getItem(int position) { return null; }
public long getItemId(int position) { return 0; }
public View getView(int position, View convertView, ViewGroup parent) {
View MyView = convertView;
if (convertView == null) {
LayoutInflater li = getLayoutInflater();
MyView = li.inflate(R.layout.shape, null);
ImageView image = (ImageView) MyView.findViewById(R.id.shape_image);
image.setBackgroundResource(images[position]);
EditText textbox = (EditText) MyView.findViewById(R.id.shape_edittext);
textbox.setVisibility(View.GONE);
TextView text = (TextView) MyView.findViewById(R.id.shape_text);
text.setText(strings[position]);
}
return MyView;
}
}