Android 为什么这个带有复选框的ListView自定义适配器的行为很奇怪?
我的ListView自定义适配器的复选框的行为很奇怪。当我选中任何复选框并上下滚动时,我的应用程序会随机选中复选框。我很困惑 下面是getView函数Android 为什么这个带有复选框的ListView自定义适配器的行为很奇怪?,android,Android,我的ListView自定义适配器的复选框的行为很奇怪。当我选中任何复选框并上下滚动时,我的应用程序会随机选中复选框。我很困惑 下面是getView函数 @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LayoutInflater inflater=(LayoutInflater) context.get
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ViewHolder holder;
if (convertView == null) {
convertView =inflater.inflate(R.layout.activity_main, parent,
false);
holder = new ViewHolder();
holder.checkBox = (CheckBox) convertView.findViewById(R.id.chkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.checkBox.setText(Name[position]);
return convertView;
}
java类
public class ViewHolder {
CheckBox checkBox;
}
String[] names=new String[]{
"Name1" , "Name2" , "Name3" ,"Name4" , "Name5" , "Name6","Name7" , "Name8" , "Name9","Name10" , "Name11" , "Name12"};
MainActivity.java类中的字符串
public class ViewHolder {
CheckBox checkBox;
}
String[] names=new String[]{
"Name1" , "Name2" , "Name3" ,"Name4" , "Name5" , "Name6","Name7" , "Name8" , "Name9","Name10" , "Name11" , "Name12"};
我确信这是原因,但可能是以下原因之一:
- 将视图持有者类设为静态,以便只有一个实例
- 为什么每次调用getView时都会膨胀布局(调用次数很多);在构造函数中执行此操作,并为以后的访问分配一个成员变量
- 我认为这不是必需的,但请确保将复选框初始化为checked=false
否则,您的代码在我看来很好,我不在我的开发机器上,因此无法测试我的建议。希望有帮助。您需要在getView中设置复选框的“选中”状态(例如,在调用setText之后) 现在,当您单击其中一个视图时,它的复选框被选中,然后该视图将在其他位置重复使用,但仍保持选中状态