2012-03-22 58 views
1

我有一個listview,我有onItemLongClickListener附加。一切工作正常,但當我添加太多(例如100)項目的列表,一些意見失去了聽衆。不知道是什麼問題,我也調試了這個問題,但仍然無法弄清楚。Android ListView項目鬆動偵聽器,如果添加了太多項目

也沒有例外被拋出,它只是停止工作。

然後,如果我從列表中刪除所有東西並開始添加東西,只要我不添加到許多項目,它就可以正常工作。

這是內存問題嗎?

我到處搜索,但沒有運氣。

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

你在你的適配器中做了些額外的事情嗎?劫持事件?添加太多項目不應該是一個問題。我想不出任何原因會發生。 – 2012-03-22 04:32:05

+0

適配器也沒有什麼特別的,只需要對視圖進行充氣和賦值。 – Mayank 2012-03-22 05:03:22

回答

0

找到了解決問題的辦法,

我問

adapterView.getChildAt(position) 

這是不這樣做,如果你希望獲得下面的數據正確的方式,

正確的方法是調用

adapterView.getItemAtPosition(position) 

它返回在用來填充listView的對象下面。

0

我想: 您的項目包含從項目或ListView爭奪自動獲取焦點的EditText或按鈕。 你需要setFocus(false)或listView.setItemsCanFocus(false); 讓項目視圖不能佔據焦點。

+0

不,listItem不包含EditText或Button,它只有TextView和ImageView – Mayank 2012-03-22 05:21:22

相關問題