Android ListView Дублирует записи
Если я наберу "Hello" в моем тексте редактирования в упражнении 1, это добавит "Hello" к списку в занятии 2 в качестве первой записи (в которой нет ошибок). Кроме того, если я введу "Apple" в качестве второй записи, я изменю первую запись "Hello" на "Apple" и добавлю новую 2-ую запись "Apple"... в результате чего обе записи станут "Apple" и "Apple"... Какие-нибудь мысли?
Act2 @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_argue_list);
ListView txtlist = (ListView)findViewById(android.R.id.list);
Bundle bun = getIntent().getExtras();
Lrg = bun.getString("Jenny");
Med = bun.getString("Forest");
Med2 = bun.getString("Gump");
KoreyzAdapter add = new KoreyzAdapter();
txtlist.setAdapter(add);
list.add(0, Lrg);
add.notifyDataSetChanged();
setListAdapter(add);
}
class KoreyzAdapter extends ArrayAdapter<String>{
public KoreyzAdapter() {
super(ArgueListActivity.this, android.R.layout.simple_list_item_1, list);
}
class ViewHolder{
TextView who;
TextView sex;
TextView cat;
ImageView pic;
ViewHolder(View v){
who = (TextView) v.findViewById(R.id.inputLrgtxt);
sex = (TextView) v.findViewById(R.id.whoMedtxt);
cat = (TextView) v.findViewById(R.id.stupidMedtxt);
pic = (ImageView)v.findViewById(R.id.sexpic);
}
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = null;
if(row == null){
LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflator.inflate(R.layout.list_item, parent, false);
holder = new ViewHolder(row);
row.setTag(holder);
}else{
holder = (ViewHolder)row.getTag();
}
holder.who.setText(Lrg);
holder.sex.setText(Med);
holder.cat.setText(Med2);
holder.pic.setImageResource(R.drawable.maleandfemale);
return row;
}
3 ответа
С помощью ArrayAdapters всегда передайте расположение элементов строки списка в конструкторе.
Пример: TodosAdapter(Context context, int layoutResourceId, List<Todo> todos);
int layoutResourceId - это android.R.layout.simple_list_item_1
Проверьте эту ссылку. Это может помочь и вам.
Даже когда я столкнулся с той же проблемой, мне потребовалось 2 дня, чтобы избавиться от этой проблемы.
Я надеюсь, что это помогло вам.:)
Вы должны очистить данные адаптера. Перед загрузкой listView из адаптера очистите список в onCreate() вашей деятельности. Это просто добавление старых данных. Вот почему он показывает два раза. Я надеюсь, что это будет работать.
Используйте этот onCreate():
list.clear()