我在 android 中有一个 GridView,我用从 xml 资源检索到的数据填充它。
例如,我在 GridView 中有 15 个项目按顺序放置。总高度超过了屏幕高度,所以我必须滚动才能看到其余的项目。
问题是当我向上滚动时,不可见行的顺序已经改变。这是一种神秘的行为,因为有时项目会相互交换行。这是我的getView
方法:
public class ImageAdapter extends BaseAdapter {
public ImageAdapter(Context c, NodeList cuu) {
cu = cuu;
}
public int getCount() {
Log.d("Node Count",cu.getLength()+"");
return cu.getLength();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View myView = convertView;
if (convertView == null) {
Node nd = cu.item(position);
Log.d("nodes","Pos: "+(position)+" Name: "+nd.getNodeName()+" Title: "+nd.getAttributes().getNamedItem("title").getTextContent());
int catID = Integer.parseInt(nd.getAttributes().getNamedItem("id").getTextContent());
LayoutInflater li = getLayoutInflater();
myView = li.inflate(R.layout.grid_item, null);
ImageView imageView = (ImageView) myView.findViewById(R.id.grid_item_image);
myView.setLayoutParams(new GridView.LayoutParams(70, 100));
id.download(nd.getAttributes().getNamedItem("icon").getTextContent(),imageView);
TextView textView = (TextView) myView.findViewById(R.id.grid_item_text);
textView.setText(nd.getAttributes().getNamedItem("title").getTextContent());
myView.setTag((Object) catID);
}else{
//Log.d("nodes","Pos: "+(position));
}
return myView;
}
private NodeList cu = null;
}
更新:嗯,这很奇怪。经过更多调试后,我注意到在 GridView 中,适配器跳过了第 13 个位置,这意味着它返回 1 而不是 13,然后移动到 14!(我猜 13 是运气不好!)