滚动时ListView位置问题

ListView position problem while scrolling

我正在开发一个应用程序,其中包含用户必须填写的表单。 该表单有一些文本视图、编辑文本、一个列表视图和两个按钮。

列表视图由一个文本视图和两个单选按钮组成。 我用一个问题和每行两个单选按钮填充列表视图。 如果我重用覆盖 getView 方法中给出的转换视图,当我检查单选按钮时,它将检查第一个可见的单选按钮,同时根据每个滚动的屏幕向下滚动。

 @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;
}

您需要将检查数据保存到一个数组中。当您向下滚动并返回检查行时,它不知道检查的位置。如果您没有模型数组,只需创建一个检查列表并在 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;
}