如果添加了太多项目,Android ListView项目会松散侦听

时间:2012-03-22 04:19:40

标签: android 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);          

}

2 个答案:

答案 0 :(得分:0)

我认为: 您的项目包含EditText或Button,它可以从项目或listView中自动获得焦点。 你需要setFocus(false)或listView.setItemsCanFocus(false); 让项目视图无法成为焦点。

答案 1 :(得分:0)

找到问题的解决方案,

我在问

adapterView.getChildAt(position) 

如果您想要获取数据,

这不是正确的方法。

正确的方法是致电

adapterView.getItemAtPosition(position)

返回用于填充listView的对象下面。