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 番目の位置をスキップしていることに気付きました。つまり、13 ではなく 1 を返し、14 に移動します!!! (13は不運だと思います!)