滚动时ListView位置问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滚动时ListView位置问题相关的知识,希望对你有一定的参考价值。
我正在开发一个带有用户必须填写的表单的应用程序。表单有一些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;
}
答案
您需要将检查数据保存到数组中。当您向下滚动并返回选中的行时,它不知道在哪里检查。如果你没有模型数组,只需创建一个选中的列表并在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;
}
以上是关于滚动时ListView位置问题的主要内容,如果未能解决你的问题,请参考以下文章