Java SwipeHelper onTouchListener未更新位置
我正在尝试在一个RecyclerView项下制作一个可滑动按钮,如下所示: 我通过使用swipeheloper.class来实现这一点。但是,第一次使用时代码运行良好。但是,当我删除第二项时,即如果有3项,我删除no3,然后尝试删除no2。我收到一个Java SwipeHelper onTouchListener未更新位置,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在尝试在一个RecyclerView项下制作一个可滑动按钮,如下所示: 我通过使用swipeheloper.class来实现这一点。但是,第一次使用时代码运行良好。但是,当我删除第二项时,即如果有3项,我删除no3,然后尝试删除no2。我收到一个null对象引用错误 private View.OnTouchListener onTouchListener = new View.OnTouchListener() { @Override public bo
null对象引用错误
private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent e) {
if (swipedPos < 0) return false;
Point point = new Point((int) e.getRawX(), (int) e.getRawY());
Log.d("message", "hey" + swipedPos);
//HERE IS THE CODE THAT TRIGGERS THE ERROR _______
RecyclerView.ViewHolder swipedViewHolder = recyclerView.findViewHolderForAdapterPosition(swipedPos);
//ERROR ABOVE _______
assert swipedViewHolder != null;
View swipedItem = swipedViewHolder.itemView;
Rect rect = new Rect();
swipedItem.getGlobalVisibleRect(rect);
if (e.getAction() == MotionEvent.ACTION_DOWN || e.getAction() == MotionEvent.ACTION_UP ||e.getAction() == MotionEvent.ACTION_MOVE) {
if (rect.top < point.y && rect.bottom > point.y)
gestureDetector.onTouchEvent(e);
else {
recoverQueue.add(swipedPos);
swipedPos = -1;
recoverSwipedItem();
}
}
return false;
}
};
我得到的确切线索是:
java.lang.NullPointerException: Attempt to read from field 'android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView' on a null object reference
at rg.com.timesaver.ui.history.SwipeHelper$2.onTouch(SwipeHelper.java:56)
有人能解释为什么会发生这种情况并提供解决方案吗
java.lang.NullPointerException: Attempt to read from field 'android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView' on a null object reference
at rg.com.timesaver.ui.history.SwipeHelper$2.onTouch(SwipeHelper.java:56)