我试着在谷歌上到处找,但是找不到解决我的问题的方法。
基本上,我有一个利用CardViews的RecyclerView,我想允许在这些cardview上拖放。滑动可以很好地工作,但在ItemTouchHelper中,拖放不起作用。我不知道为什么,我已经指定了正确的移动方向。
我可以向左和向右滑动swipeDirs,但在dragDirs上上下滑动不起作用。我不确定这是不是模拟器本身不能识别“拖拽”的问题,因为如果我上下连接到swipeDirs,我可以在任何方向上滑动作为测试。
我没有得到任何拖放工作的视觉效果
ItemTouchHelper.Callback scb = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT){
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target){
//call back to adapter to swap positions, the Error is not with this line of code (at least not yet)
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction){
}
};
ItemTouchHelper ith = new ItemTouchHelper(scb);
ith.attachToRecyclerView(recyclerView);感谢您的帮助,谢谢
发布于 2016-07-20 02:46:39
弄清楚了,你需要在你的适配器中重写onBindViewHolder
@Override
public void onBindViewHolder(Adapter.ViewHolder holder, int position){
final Adapter.ViewHolder xholder = holder;
holder.card.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent event){
if(MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN)
listener.onStartDrag(xholder);
return false;
}
});
}然后在包含ItemTouchHelper的RecyclerList中
@Override
public void onStartDrag(ViewHolder holder){
itemTouchHelper.startDrag(holder);
}https://stackoverflow.com/questions/38465822
复制相似问题