我正在开发一个带有用户必须填写的表单的应用程序。 表单具有一些textview,edittext,一个listview和两个按钮。
列表视图由一个文本视图和两个单选按钮组成。 我用一个问题和每行中的两个单选按钮填充列表视图。 如果我重复使用重写的getView方法中给定的convertview,则当我检查单选按钮时,它将按向下滚动的每个屏幕检查可见的第一个单选按钮。
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = ((Activity)context).getLayoutInflater().inflate(R.layout.riskrowlayout, parent, false);
}
((TextView)convertView.findViewById(R.id.tvPreg)).setText(data.get(position));
return convertView;
}
否则,如果每次调用getView时都对布局进行充气,它将自动取消选中滚动时选中的单选按钮。
@Override
public View getView(int position, View convertView, ViewGroup parent){
convertView = ((Activity)context).getLayoutInflater().inflate(R.layout.riskrowlayout, parent, false);
((TextView)convertView.findViewById(R.id.tvPreg)).setText(data.get(position));
return convertView;
}
我做错了什么?我该如何解决? 如果您需要更多信息,请给我。
非常感谢您!
最后一条注释中的问题已解决,只需将这段代码粘贴到another post中:
@Override
public int getViewTypeCount() {
return getCount();
}
@Override
public int getItemViewType(int position) {
return position;
}
答案 0 :(得分:0)
您需要将检查数据保存在一个数组中。当您向下滚动并返回选中的行时,它不知道在哪里检查。如果您没有模型数组,则只需创建一个检查列表,然后在getview方法内部和内部设置所有false即可查看数组。
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = ((Activity)context).getLayoutInflater().inflate(R.layout.riskrowlayout, parent, false);
}
TextView textView = (TextView) convertView.findViewById(R.id.tvPreg);
textView.setText(data.get(position));
radioButton.setChecked(checked.get(position));
return convertView;
}