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()
Другие вопросы по тегам