2012-03-22 5 views
1

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

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

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

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

Я искал вокруг, но не повезло.

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

нет ничего необычного в адаптере, просто раздувая представление и присваивая значения элементам. – Mayank

ответ

0

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

Я спрашивал

adapterView.getChildAt(position) 

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

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

adapterView.getItemAtPosition(position) 

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

0

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

+0

нет, listItem не содержит EditText или Button, у него есть только TextView и ImageView – Mayank

Смежные вопросы