2013-04-29 65 views
1

我正在用DragSortListView製作一個ListView,所以我可以移動這些行來重新排列列表。 那麼,我需要修改列表的行爲。默認情況下,列表不能重新排序(setDragEnabled = false)並且當用戶點擊一個項目菜單時,只有這個列表可以重新排序(setDragEnabled = true)。 問題是,當我將DragSortListView設置爲setDragEnabled爲true時,屏幕上當前只顯示不是的項目會受到影響。例如:如果我的列表中有10個項目,但屏幕只能顯示6個(因爲屏幕的大小),則其他4個項目將受到影響,但不會影響當前屏幕上的6個項目。 不知道這是DragSortListView的問題還是來自ListView。在DragSortListView中刷新項目

所以我的問題是:如何更新DragSortListView中所有項目的數據?

現在這是我

switch(item.getItemId()) { 
    case R.id.list_menu_item1:    
    ArrayList aL = new ArrayList(); 
    aL = (ArrayList) findViewWithTagRecursively(dslv,"_indicator"); 

    for(int i = 0; i < aL.size(); i++){ 
     dslv.setDragEnabled(true); 
     adapter.notifyDataSetChanged(); 
     ImageView list_image = (ImageView)aL.get(i); 
     //aL -> ArrayList with the items (views) in the list. 
     list_image.setImageDrawable(this.getResources().getDrawable 
       (this.getResources().getIdentifier 
         ("drawable/delete_x",null,this.getPackageName()))); 
    } 
    break; 
    default: 
    break; 
} 

回答

0

取而代之的是循環的,只是叫

dslv.setDragEnabled(true); 
adapter.notifyDataSetChanged(); 

,並在你的適配器的getView()根據拖動是否啓用或不設置繪製。 notifyDataSetChanged()將根據需要爲列表項調用getView()