Элементы Android ListView теряют слушателя, если добавлено слишком много элементов

1

У меня есть список, на котором у меня onItemLongClickListener. Все работает нормально, но когда я добавляю слишком много (например, 100) элементов в список, некоторые из них теряют слушателя. Не уверен, в чем проблема, я также отлаживал проблему и до сих пор не могу понять.

Не исключено и исключение, оно просто перестает работать.

Затем, если я удалю все из списка и начну добавлять вещи, он отлично работает, пока я не добавляю ко многим элементам.

Это проблема памяти?

Я искал везде, но не повезло.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_frame);

    // Set text view for orderTotal
    orderTotal = (TextView) findViewById(R.id.orderTotal);
    orderTotal.setText("0.00");
    // List view from layout
    itemsListView = (ListView) this.findViewById(R.id.item_list);
    // Current order to be consistent throughout activities.
    currentOrder = ((OrderIt)this.getApplication()).getCurrentOrder();

    databaseCategories = (ArrayList<Category>) this.getIntent().getExtras()
            .getSerializable("databaseCategories");
    // List of items already in order.
    itemsListView.setAdapter(new ItemAdapter(this, R.layout.list_item,
            currentOrder.getItems()));

    itemsListView.setOnItemLongClickListener(this);


    this.registerForContextMenu(itemsListView);
    // Gridview from layout
    gridView = (GridView) findViewById(R.id.item_grid);
    ArrayList<Item> items = getItems();
    gridView.setAdapter(new ImageAdapter(this, items));
    // Set click adapter to grid view items
    gridView.setOnItemClickListener(this);
    gridView.setOnItemLongClickListener(this);          

}
  • 1
    Вы делаете что-то дополнительное в своем адаптере? Угон событий там? Не должно быть проблем с добавлением слишком большого количества элементов. Я не могу думать ни о какой причине, почему это произошло бы.
  • 0
    в адаптере тоже нет ничего необычного, просто надувая вид и присваивая значения элементам.
Теги:
android-listview

2 ответа

0
Лучший ответ

нашел решение проблемы,

я спрашивал

adapterView.getChildAt(position) 

это неправильный способ сделать это, если вы хотите получить данные,

правильный путь - позвонить

adapterView.getItemAtPosition(position)

который возвращается под объектом, который использовался для заполнения listView.

0

Я думаю: ваш элемент содержит EditText или Button, который автоматически пытается получить фокус из элемента или спискаView. вам нужно установитьFocus (false) или listView.setItemsCanFocus(false); пусть просмотр элементов не может сфокусироваться.

  • 0
    нет, listItem не содержит EditText или Button, он имеет только TextView и ImageView

Ещё вопросы

Сообщество Overcoder
Наверх
Меню