我有一个用于显示图像网格的GridView。每个图像下方都是一个EditText字段。
将图像ID预先加载到数组中,以便我的自定义BaseAdapter类的getView()方法可以维护它们。
但是,当用户点击任何EditText字段时,图像的顺序会突然改变(从" Recall Initial"到" Recall adjust"在下图中)。
当用户点击editText会导致gridview元素的位置变得混乱时,幕后会发生什么事吗?
游戏是记忆游戏。向用户呈现几行图像(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;
}
}