Por que os itens mudam de ordem após a rolagem no Android GridView?
Eu tenho um GridView no android que eu preenchê-lo com dados recuperados de um recurso xml.
Por exemplo, eu tenho 15 itens no GridView que são colocados em ordem. A altura total excede a altura da tela, então eu tenho que rolar para ver o resto dos itens.
O problema é quando eu rola para cima, a ordem das linhas invisíveis mudou. É um comportamento misterioso, pois às vezes os itens trocam linhas entre si. Aqui está o meugetView
método:
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;
}
Atualizar: Bem, é bastante estranho. Depois de um pouco mais de depuração, notei que no GridView, o adaptador pula a 13ª posição, o que significa que ele retorna 1 em vez de 13 e depois passa para 14 !!! (Eu acho que o 13 é azar!)