Я использую ListView для отображения TextViews в некоторых строках, а не для других. Я не знаю, сколько предметов там будет, он работает нормально, но когда я прокручиваю вниз, дисплей изменился.
Например: Если у меня есть 10 элементов в ListView, и только 5 из них в настоящее время видны. Адаптер правильно возвращает позиции от 0 до 4 ... это нормально. Когда я прокручиваю позицию позиции 10 и вернусь к вершине, я получаю все мои предметы, похожие на первый элемент в списке, и если я прокручиваю много раз, я получаю первый элемент, повторяемый 10 раз.Я теряю данные, когда прокручиваю свой ListView в Android
Im using ArrayAdapter.
Вот код:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
PlanningHolder holder = null;
if (row == null) {
row = mInflater.inflate(layoutResourceId, parent, false);
holder = new PlanningHolder();
holder.numberOfJour = (TextView) row.findViewById(R.id.numberDate);
holder.lay = (LinearLayout) row.findViewById(R.id.layPlage);
row.setTag(holder);
} else {
holder = (PlanningHolder) row.getTag();
}
if(position%2 == 1){
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
params.setMargins(50, 5, 30, 5);
//MarginLayoutParams marginLayoutParams = (MarginLayoutParams) params.getLayoutParams();
//marginLayoutParams.setMargins(marginleft, 5, display.getWidth() - marginright, 5);
TextView newplage = new TextView(context);
newplage.setLayoutParams(params);
newplage.setBackgroundColor(context.getResources().getColor(R.color.darkorrange));
holder.lay.addView(newplage);
}
holder.numberOfJour.setText(myPlannig.getCurrent().get(Calendar.DAY_OF_MONTH) + "");
row.setId(position);
return row;
}
и это моя ListView декларация:
<ListView
android:id="@+id/list_planning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/top_shadow"
android:scrollingCache="true"
android:dividerHeight="1dp">
</ListView>
спасибо за ответы, но в том случае, еще я не буду мой 'holder.lay' без каких-либо взглядов. –
Поэтому удалите их из 'holder.lay' в' else'. –
большое спасибо за ans –