nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
答案 0 :(得分:0)
您返回现有的convertView而不设置实际选择。 在onCheckedChanged方法中,您必须存储单选按钮的新选择状态,并在getView()方法中构建视图时使用它
private class MyAdapter extends ArrayAdapter<String> {
private int[] selections;
public MyAdapter(Context context, String[] strings) {
super(context, -1, -1, strings);
selections = new int[strings.length];
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
rbg.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
selections[position] = checkedId;
}
});
...
rbg.check(selections[position]);
return listLayout;
}
}
答案 1 :(得分:0)
您没有使用视图持有者类......这就是您遇到此问题的原因...请按照以下教程进行操作:
[http://java.dzone.com/articles/android-listview-optimizations]
答案 2 :(得分:0)
这没有意义:
convertView = listLayout;
convertView.setTag(listLayout);
...
listLayout = (LinearLayout) convertView.getTag();
convertView!=null
时:您必须更新其中的数据。如果你按原样返回它&#39; :它将按原样显示&#39; (即与convertView的先前位置的数据具有相同的数据)
只是为了澄清convertView
:
如果convertView
不为空:这是因为Android有机会重新使用listView中暂时使用但现在不在屏幕中的视图。因此,您不必从头开始重新创建视图,所有您需要做的就是根据convertView的新position
更新数据
试试这个:
((TextView)convertView.findViewById(5001)).setText(super.getItem(position));