Проблема положения ListView при прокрутке - PullRequest
0 голосов
/ 28 сентября 2018

Я разрабатываю приложение с формой, которую пользователи должны будут заполнить.Форма имеет несколько видов текста, правки редактирования, вид списка и две кнопки.

Вид списка состоит из вида текста и двух радиокнопок.Я заполняю список с вопросом и двумя радиокнопками в каждом ряду.Если я повторно использую функцию convertview, заданную в переопределенном методе 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;
}

Что я делаю не так?Как я могу решить это?Если вам нужна дополнительная информация, спросите, и я дам вам.

Большое спасибо за преимущество!

Проблема с последним комментарием решена, просто вставьте этот код из другого сообщения :

@Override
public int getViewTypeCount() {                 
return getCount();
}

@Override
public int getItemViewType(int position) {
return position;
}

1 Ответ

0 голосов
/ 28 сентября 2018

Вам необходимо хранить данные чеков в массиве.Когда вы прокручиваете вниз и возвращаетесь проверенный ряд, он не знает, где проверен.Если у вас нет массива модели, просто создайте проверенный список и установите все false внутри и внутри метода 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 textView = (TextView) convertView.findViewById(R.id.tvPreg);


    textView.setText(data.get(position));
    radioButton.setChecked(checked.get(position));


    return convertView;
}
...