滚动时ListView位置问题

问题描述 投票:-1回答:1

我正在开发一个带有用户必须填写的表单的应用程序。表单有一些textview,edittexts,listview和两个按钮。

列表视图由textview和两个radiobutton组成。我在列表视图中填充了一个问题,每行都有两个radiobuttons。如果我重复使用覆盖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;
}
android listview scroll android-radiobutton
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.