В Android данные listview поступают несколько раз, когда я возвращаюсь, как я могу их удалить?

#android #listview

#Android #listview

Вопрос:

У меня 2 представления:

  1. Listview
  2. Подробная информация об элементе списка

Когда я сначала запускаю свое приложение, оно отображается ListView , а затем, когда я выбираю элемент, ListView он переходит в следующий вид, называемый details of элемент списка. Теперь, когда я возвращаюсь к ListView элементам списка, они появляются несколько раз. Как я могу решить эту проблему?

Спасибо

Как показано ниже, я добавляю данные в ArrayAdapter.

 MyArrayAdapter adapter = new MyArrayAdapter(SampleActivity.this, R.layout.citieslist, scity);

lv.setAdapter(adapter);
lv.setTextFilterEnabled(true);
  

MyArrayAdapter выглядит следующим образом…

 private class MyArrayAdapter extends BaseAdapter {
    String[] items;

    public MyArrayAdapter(Context context, int
            textViewResourceId, String[] items) {
        this.items = items;
    }

    @Override
    public int getCount() {
        return items.length;
    }

    @Override
    public Object getItem(int position) {
        return
                position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.citieslist, null);
        }
        TextView tv = (TextView) v.findViewById(R.id.tvCity);
        tv.setText(items[position]);
        return v;
    }
}
  

Комментарии:

1. Почему вы задали так много вопросов и не приняли ни одного ответа?

2. теперь вы можете сказать ответ на мой запрос

3. Вероятно, это ваш адаптер. Пожалуйста, опубликуйте код

4. посмотрите код и дайте ответ боссу

Ответ №1:

Я бы попробовал 3 вещи:

  1. Удалите строку setTextFilterEnabled. Если только вы не делаете что-то специально с фильтрацией, о чем я не знаю.
  2. Вы передаете контекст, но не сохраняете его. Сохраните его в переменной класса и используйте его для # 3.
  3. Измените строку inflate вашего метода getView () адаптера на:

     if (v == null) {                
        v = LayoutInflater.from(context).inflate(R.layout.citieslist, parent, false);
    }
      

Ответ №2:

Есть две возможности,

один:

когда вы возвращаетесь с подробного просмотра на страницу listview,

если вы используете «startActivity (намерение)», замените на «finish ()».

два: инициализируйте listview «scity» в «onCreateView ()»