Android: ArrayAdapter中的ListView在滚动过程中变化
Android: ListView in ArrayAdapter changes during the scrolling
这是我的适配器的 getView() - 使用 View Holder 模式的非常简单的实现:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Exercise exercise = mList.getItem(position);
ViewExerciseHolder viewExerciseHolder;
if(convertView == null) {
viewExerciseHolder = new ViewExerciseHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.item_view, parent, false);
...
viewExerciseHolder.inputsLayout = (LinearLayout) convertView.findViewById(R.id.inputs);
convertView.setTag(viewExerciseHolder);
} else {
viewExerciseHolder = (ViewExerciseHolder) convertView.getTag();
}
for (int i=0; i<exercise.nbSeries; i++) {
ItemExerciseNbRepWeightView view = new ItemExerciseNbRepWeightView(getContext());
view.setNbRep(exercise.nbReps);
view.setWeight(exercise.weight);
...
viewExerciseHolder.inputsLayout.addView(view);
}
}
问题是 inputsLayout:添加到的数据不正确,在滚动过程中这些数据发生变化...
感谢您的帮助!
试试这个,我已经通过在我的适配器上安装这个解决了这个问题class,
View view = null;
convertView = null; in the get view and comments the else part of
if (convertView == null) {
}
/*else{
} */
嵌套的 Layout
被回收,这意味着它可能包含在之前调用 getView()
时添加的视图。您必须清除之前添加的所有 View
的回收 'inputsLayout'。
一种方法是调用 removeAllViews()
.
这是我的适配器的 getView() - 使用 View Holder 模式的非常简单的实现:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Exercise exercise = mList.getItem(position);
ViewExerciseHolder viewExerciseHolder;
if(convertView == null) {
viewExerciseHolder = new ViewExerciseHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.item_view, parent, false);
...
viewExerciseHolder.inputsLayout = (LinearLayout) convertView.findViewById(R.id.inputs);
convertView.setTag(viewExerciseHolder);
} else {
viewExerciseHolder = (ViewExerciseHolder) convertView.getTag();
}
for (int i=0; i<exercise.nbSeries; i++) {
ItemExerciseNbRepWeightView view = new ItemExerciseNbRepWeightView(getContext());
view.setNbRep(exercise.nbReps);
view.setWeight(exercise.weight);
...
viewExerciseHolder.inputsLayout.addView(view);
}
}
问题是 inputsLayout:添加到的数据不正确,在滚动过程中这些数据发生变化...
感谢您的帮助!
试试这个,我已经通过在我的适配器上安装这个解决了这个问题class,
View view = null;
convertView = null; in the get view and comments the else part of
if (convertView == null) {
}
/*else{
} */
嵌套的 Layout
被回收,这意味着它可能包含在之前调用 getView()
时添加的视图。您必须清除之前添加的所有 View
的回收 'inputsLayout'。
一种方法是调用 removeAllViews()
.