Android ListView项目如果添加了太多项目,则会丢失侦听器



我有一个附加了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);          
}

我认为:您的项目包含EditText或Button,可从项目或列表视图中自动获取焦点。您需要设置焦点(false)或listView.setItemsCanFocus(false);让项目视图不能占据焦点。

找到了问题的解决方案,

我在问

adapterView.getChildAt(position) 

如果你想获得下面的数据,,这不是正确的方法

正确的方法是呼叫

adapterView.getItemAtPosition(position)

它返回用于填充listView的底层对象。

最新更新