В настоящее время я добавляю TextViews внутри LinearLayout внутри элемента ListView, используя цикл for, потому что количество текстовых элементов, которые я должен добавить, есть переменная. Я добавляю элементы в список, как обычно. Проблема в том, что когда я прокручиваю элементы, становлюсь все больше и больше, и когда я прокручиваю резервные копии, я получаю сотни предметов. Я думаю, это потому, что ListView перезагружается и циклически перемещается по циклу for еще раз и поэтому добавляет каждый TextView несколько раз. Могу ли я остановить это?Android ListView добавляет слишком много элементов
Мой код:
public class ListViewAdapter extends ArrayAdapter<RowItem> {
private final Context context;
public ListViewAdapter(Context context, List<RowItem> items) {
super(context, R.layout.list, items);
this.context = context;
}
private class ViewHolder {
TextView title;
LinearLayout linearLayout;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
RowItem rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_list, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.list_line);
holder.linearLayout = (LinearLayout) convertView.findViewById(R.id.list_linear);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(rowItem.getTitle());
String data = rowItem.getData();
String[] split0 = data.split("=");
Log.e("DATA", data);
Log.e("LINE", rowItem.getTitle());
for (int j = 0; j < split0.length; j++) {
String[] split1 = split0[j].split(":");
LinearLayout parentLayout = new LinearLayout(MainActivity.context);
parentLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
parentLayout.setOrientation(LinearLayout.HORIZONTAL);
for (int k = 0; k < split1.length; k++) {
TextView textView = new TextView(MainActivity.context);
textView.setText(split1[k]);
textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f));
textView.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
textView.setTextSize(18);
parentLayout.addView(textView);
}
holder.linearLayout.addView(parentLayout);
}
return convertView;
}
}
Мой sceme данных выглядит следующим образом для одной записи:
text1:text2=text3:text4
Как это будет выглядеть в списке:
text1 text2
text3 text4
использование стан dard viewHolder и удалите allViews LinearLayout, прежде чем запускать код добавления ur view, используя viewGroup.removeAllViews() –
Можете ли вы дать мне какой-нибудь пример кода, как бы я это сделал? – Broadwell
напишите свой код. Было бы более полезно дать предложение. – dora