Android GridView在输入EditText时重新排列ImageView

时间:2011-11-13 05:44:36

标签: android gridview imageview android-edittext

我有一个用于显示图像网格的GridView。每个图像下方都是一个EditText字段。

将图像ID预先加载到数组中,以便我的自定义BaseAdapter类的getView()方法可以维护它们。

但是,当用户点击任何EditText字段时,图像的顺序会突然改变(从" Recall Initial"到" Recall adjust"在下图中)。

当用户点击editText会导致gridview元素的位置变得混乱时,幕后会发生什么事吗?

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;        
    }
}

0 个答案:

没有答案