2013-07-08 15 views
0

我想阻止我的列表視圖項目追加當我按下按鈕兩次。我嘗試使用.Clear(),但我不知道該把它放在哪裏或如何放置它,有時它甚至會停止填充項目或根本不清除項目。Android無法清空列表視圖項目

全球的東西:

ArrayAdapter<CharSequence> adapter; 
ArrayList<MessageDetails> details; 

我的按鈕:

 @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      try 
      { 
       //Tried clearing adapter first before code runs but items do not even get displayed 
       adapter.clear(); 
       adapter.notifyDataSetChanged(); 
       //sendPostData calls refreshListView method 
       new sendPostData().execute(nric.getText().toString()); 
      } 
      catch (Exception e) 
      { 

      } 
     } 

我refreshListView()方法:

private void refreshListView() 
{  
    adapter = new ArrayAdapter<CharSequence>(getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, items); 
    myInfoList.setAdapter(adapter); 

    details = new ArrayList<MessageDetails>(); 
    MessageDetails Detail; 

    Detail = new MessageDetails(); 

    for (int i =0; i < itemName.size(); i++) 
    { 
     float totalprice = itemPrice.get(i) * Quantity.get(i); 
     Detail = new MessageDetails(); 
     Detail.setitemName(itemName.get(i)); 
     Detail.setItemDescription(description.get(i)); 
     Detail.setitemPrice(String.valueOf(totalprice)); 
     Detail.setQuantity(Quantity.get(i).toString() + " sets"); 
     Detail.setDate(purchaseDate.get(i).toString()); 
     details.add(Detail); 
    } 

    myInfoList.setAdapter(new CustomAdapter(details , getActivity())); 
} 

編輯刪除第一個適配器。

全局項:

CustomAdapter mCustomAdapter; 

refreshListView:

private void refreshListView() 
{   
    details = new ArrayList<MessageDetails>(); 
    MessageDetails Detail; 

    Detail = new MessageDetails(); 

    for (int i =0; i < itemName.size(); i++) 
    { 
     float totalprice = itemPrice.get(i) * Quantity.get(i); 
     Detail = new MessageDetails(); 
     Detail.setitemName(itemName.get(i)); 
     Detail.setItemDescription(description.get(i)); 
     Detail.setitemPrice(String.valueOf(totalprice)); 
     Detail.setQuantity(Quantity.get(i).toString() + " sets"); 
     Detail.setDate(purchaseDate.get(i).toString()); 
     details.add(Detail); 
    } 

    mCustomAdapter = new CustomAdapter(details , getActivity()); 
    myInfoList.setAdapter(mCustomAdapter); 
} 
+0

refreshListView()是在aync任務-sendPostData( )? –

+0

是的,與其他代碼,但它不影響適配器 –

回答

0

您提交兩份differnts Adapter實例您ListView,後者超越前者的實例。所以你應該保留對CustomAdapter的引用,並且寫一個方法來清除數據集。

CustomAdapter mCustomAdpater = new CustomAdapter(details , getActivity()); 
myInfoList.setAdapter(mCustomAdpater); 

內CustomAdapter,自己寫clear()方法,裏面onClick()你會打電話給

mCustomAdpater.clear(); 
+1

我必須清除第一個適配器嗎? –

+0

mCustomAdapter沒有.clear();對我來說 –

+0

你是否看到這兩個東西的物品? – Blackbelt

0

這爲我工作:

 listview.removeAllViewsInLayout(); 
     listview.removeAllViewsFromAdapter(); 
     listview.setAdapter(null); 
     listview.refreshDrawableState(); 
     listview.removeViews(0, listview.getChildCount());