gpt4 book ai didi

android - 从 ListView 中的 OnItemLongClickListener 启用拖动排序 ListView 时出现 NullPointerException

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:05 26 4
gpt4 key购买 nike

我在 ListFragment 中使用 drag-sort-listview ( https://github.com/bauerca/drag-sort-listview)。

当我在创建时启用 dragsort 时一切正常。但是,我想让它保持禁用状态,直到长按 ListView 中的一项。

所以我想设置

mDslv.setDragEnabled(false);

在 3 个地方:onCreateView()、DragSortListView.DropListener 和 DragSortListView.RemoveListener

在我的 ListFragment 中,我有:

        listView.setOnItemLongClickListener( new AdapterView.OnItemLongClickListener(){ 
@Override
public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
mDslv.setDragEnabled(true);
return true;
}
});

我希望长按任何项目都会打开 DSLV 并允许删除或删除该项目,之后 DSLV 将再次被禁用。

但是,在调用 setDrageEnabled(true) 之后(不是同时),我得到一个 NullPointerException:

09-03 00:03:33.749: E/AndroidRuntime(9703): FATAL EXCEPTION: main
09-03 00:03:33.749: E/AndroidRuntime(9703): java.lang.NullPointerException
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.mobeta.android.dslv.DragSortController.onScroll(DragSortController.java:381)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.GestureDetector.onTouchEvent(GestureDetector.java:541)
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.mobeta.android.dslv.DragSortController.onTouch(DragSortController.java:243)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.View.dispatchTouchEvent(View.java:3881)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1703)
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1133)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1687)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2196)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.view.ViewRoot.handleMessage(ViewRoot.java:1880)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.os.Handler.dispatchMessage(Handler.java:99)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.os.Looper.loop(Looper.java:130)
09-03 00:03:33.749: E/AndroidRuntime(9703): at android.app.ActivityThread.main(ActivityThread.java:3729)
09-03 00:03:33.749: E/AndroidRuntime(9703): at java.lang.reflect.Method.invokeNative(Native Method)
09-03 00:03:33.749: E/AndroidRuntime(9703): at java.lang.reflect.Method.invoke(Method.java:507)
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
09-03 00:03:33.749: E/AndroidRuntime(9703): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
09-03 00:03:33.749: E/AndroidRuntime(9703): at dalvik.system.NativeStart.main(Native Method)

有人试过吗?有任何想法吗?看起来其中一个运动事件为 NULL,可能是因为我在触摸事件期间启用了 DSLV。

最佳答案

我遇到了同样的问题 - 你能解决这个问题吗?

我的一个解决方案是最初将 ListView 项上的拖动处理程序设置为 GONE - 这样用户就无法通过拖动进行排序。当长按触发时,将拖动处理程序的可见性设置为 VISIBLE。然而,这里遇到的一个问题是,当您在长按后取消选择该项目时,即使您再次将拖动处理程序设置为 GONE,用户仍然可以通过按下处理程序曾经所在的位置来进行拖动排序。

关于android - 从 ListView 中的 OnItemLongClickListener 启用拖动排序 ListView 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18586491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com