ahe*_*ick 6 android adapter swipe
我正在尝试将这两个非常棒的Android库结合起来:
https://github.com/emilsjolander/StickyListHeaders
https://github.com/wdullaer/SwipeActionAdapter
我曾与SwipeActionAdapter的所有者合作过,他说这是可能的(https://github.com/wdullaer/SwipeActionAdapter/issues/29),但我仍然收到错误:
08-02 11:33:07.364 1655-1655/com.slaptap.tappedin E/InputEventReceiver? Exception dispatching input event.
08-02 11:33:07.364 1655-1655/com.slaptap.tappedin E/MessageQueue-JNI? Exception in MessageQueue callback: handleReceiveCallback
08-02 11:33:07.380 1655-1655/com.slaptap.tappedin E/MessageQueue-JNI? java.lang.NullPointerException
at com.wdullaer.swipeactionadapter.SwipeActionTouchListener.onTouch(SwipeActionTouchListener.java:419)
at android.view.View.dispatchTouchEvent(View.java:7701)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
Run Code Online (Sandbox Code Playgroud)
我的滑动适配器包裹了我的基本适配器.然后我有另一个适配器(ListStickyAdapter),它扩展了Decorator适配器并实现了Sticky Adapater.
mAdapter = new ListAdapter(getActivity(), data);
swipeAdapter = new SwipeActionAdapter(mAdapter);
ListStickyAdapter vbsa = new ListStickyAdapter(swipeAdapter);
listView.setAdapter(vbsa);
// is it because of this line? (having to pass the sticky header child list)
swipeAdapter.setListView(listView.getWrappedList())
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
您的猜测似乎是正确的,可能是那行:
swipeAdapter.setListView(listView.getWrappedList())
Run Code Online (Sandbox Code Playgroud)
SwipeActionTouchListener 中的第 419 行出现错误,因为没有找到(向下)视图组:
L419 mDownViewGroup.showBackground...
Run Code Online (Sandbox Code Playgroud)
mDownViewGroup 是在操作 down 时初始化的子视图:
...
child = mListView.getChildAt(i);
child.getHitRect(rect);
if (rect.contains(x, y)) {
try {
mDownViewGroup = (SwipeViewGroup) child;
...
Run Code Online (Sandbox Code Playgroud)
我不知道您提供的 listview.getWrappedList() 背后的结构,但我的猜测是 swipeaction 不喜欢它。如果它不喜欢它,可能是因为包装删除了子结构(int childCount = mListView.getChildCount(); <-你得到childcount = 0,mDownViewGroup未初始化)。尝试理解为什么包装列表会删除子结构,您可能会明白发生了什么。
编辑:搜索更多一点,似乎并不是它没有得到孩子的事实,而是因为它得到的不是 swipeviewgroup :
java.lang.ClassCastException: se.emilsjolander.stickylistheaders.WrapperView cannot be cast to com.wdullaer.swipeactionadapter.SwipeViewGroup
Run Code Online (Sandbox Code Playgroud)
我设法通过分叉并使 WrapperView 扩展 SwipeViewGroup (而不是 ViewGroup)来使其工作。还必须保护一些 touchlistener npe,但这没什么大不了的。但这就是它所需要的全部。
此处提供工作示例: https: //github.com/he667/StickyListSwipe
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |