Android GridView переставляет ImageViews при вводе EditText - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть GridView, который используется для отображения сетки изображений. Под каждым изображением находится поле EditText.

Идентификаторы изображений предварительно загружены в массив, чтобы их мог поддерживать метод getView () моего пользовательского класса BaseAdapter.

Однако, когда пользователь нажимает на любое из полей EditText, порядок изображений резко меняется (с «Recall Initial» на «Recall Adjust» на рисунке ниже).

Что-то происходит за кулисами, когда пользователь нажимает на editText, который заставляет позиционирование элементов вида сетки становиться беспорядочным?

enter image description here

Игра представляет собой игру на запоминание. Пользователю представляется несколько рядов изображений (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;        
    }
}
...