2013-04-29 67 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()