2012-10-17 22 views
1

我一直在試圖獲得這個庫: https://github.com/bauerca/drag-sort-listview/DragSortListView和AlertDialog?

工作在一個AlertDialog。但到目前爲止我還沒有成功。一切看起來很完美,但拖放不會發生。

任何建議可以做?如果在AlertDialog中沒有辦法做到這一點,有沒有辦法做到這一點,而不使用意圖?

這裏是我的代碼:

public class FolderSorter 
{ 
    Context parent; 
    ArrayList<String> lists; 
    ArrayAdapter<String> adapter; 

    public FolderSorter(Context context) 
    { 
     this.parent = context; 
     lists = new ArrayList<String>(); 

     adapter = new ArrayAdapter<String>(parent, R.layout.list_item1, 
     R.id.text1); 
    } 

    public void setList(List<String> mlist) 
    { 
     this.lists.addAll(mlist); 
    } 

    public void doSort() 
    { 
     LayoutInflater factory = LayoutInflater.from(parent); 
     final View lview = factory.inflate(R.layout.sort_folders, null); 
     AlertDialog.Builder builder = new AlertDialog.Builder(parent); 
     builder.setTitle("Sort Folders"); 
     builder.setView(lview); 

     // ListView list = (ListView) lview.findViewById(R.id.listView1); 
     DragSortListView list2 = (DragSortListView) lview 
     .findViewById(R.id.dragSortListView1); 

     adapter.addAll(lists); 
     // list.setAdapter(adapter); 
     list2.setAdapter(adapter); 

     // TODO: set buttons OK and CANCEL 
     builder.setNegativeButton("Cancel", 
     new DialogInterface.OnClickListener() 
     { 

      @Override 
      public void onClick(DialogInterface dialog, int id) 
      { 
      } 
     }); 

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() 
    { 

     @Override 
     public void onClick(DialogInterface dialog, int id) 
     { 
     } 
    }); 

    final Dialog dialog = builder.create(); 
    dialog.show(); 
    } 

    private DragSortListView.DropListener onDrop = new DragSortListView.DropListener() 
    { 
    @Override 
    public void drop(int from, int to) 
    { 
     String item = adapter.getItem(from); 
     adapter.remove(item); 
     adapter.insert(item, to); 
    } 
    }; 

    private DragSortListView.RemoveListener onRemove = new DragSortListView.RemoveListener() 
    { 
    @Override 
    public void remove(int which) 
    { 
     adapter.remove(adapter.getItem(which)); 
    } 
    }; 
} 

回答

0

我使用DragSortListView的對話片段內部時也有類似的問題 - 原來,這隻有當正在顯示的片段時,軟鍵盤是可見的發生。我不確定確切的問題是什麼,但我認爲有些事情會干擾DragSortListView使用的焦點或觸摸事件。

作爲一個變通我顯示片段之前隱藏softkeyboard,這似乎解決了這個問題,現在 - 見下面的答案代碼如何做到這一點:

https://stackoverflow.com/a/7696791/1062909