【问题标题】:DragSortListView and AlertDialog?DragSortListView 和 AlertDialog?
【发布时间】:2012-10-07 07:12:34
【问题描述】:

我一直在尝试获取这个库: https://github.com/bauerca/drag-sort-listview/

在 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));
    }
    };
}

【问题讨论】:

    标签: android listview sorting drag-and-drop


    【解决方案1】:

    在对话框片段中使用 DragSortListView 时,我遇到了类似的问题 - 原来只有在显示片段时软键盘可见时才会发生这种情况。我不确定确切的问题是什么,但我认为有些东西干扰了 DragSortListView 使用的焦点或触摸事件。

    作为一种解决方法,我在显示片段之前隐藏了软键盘,这似乎暂时解决了问题 - 请参阅以下答案以获取有关如何执行此操作的代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-22
      • 2013-06-24
      • 2016-03-02
      • 2015-12-16
      • 2013-04-22
      • 2016-09-24
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多