Mit*_*d1r 8 android android-recyclerview
我创建RecyclerView了包含CardView以显示数据的内容.我想实现iOS滑动列表元素的样式来显示动作按钮.我的方法应该允许我在刷完一个RecyclerView项目后显示图标:
public void initializeListeners() {
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
if (direction == ItemTouchHelper.LEFT) {
Toast.makeText(getView().getContext(),"LEFT",Toast.LENGTH_LONG).show();
}
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
Bitmap icon;
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
View itemView = viewHolder.itemView;
float height = (float) itemView.getBottom() - (float) itemView.getTop();
float width = height / 3;
if (dX < 0) {
p.setColor(Color.parseColor("#D32F2F"));
RectF background = new RectF((float) itemView.getRight() + dX/4, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom());
c.drawRect(background, p);
icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_delete_black_24dp);
RectF icon_dest = new RectF((float) itemView.getRight() - 2 * width, (float) itemView.getTop() + width, (float) itemView.getRight() - width, (float) itemView.getBottom() - width);
c.drawBitmap(icon, null, icon_dest, p);
}
}
super.onChildDraw(c, recyclerView, viewHolder, dX/4, dY, actionState, isCurrentlyActive);
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(binding.myPlans);
}
Run Code Online (Sandbox Code Playgroud)
我想制作这个图标clickable,以便HTTP使用id点击的对象发送请求RecyclerView(在alertview确认之后)
可能吗?我试图替换Bitmap为ImageButton没有成功
如果您考虑列表中的可滑动项,则逻辑在Android和iOS上略有不同。在Android中,您无需单击即可确认删除。用户刷过项目的事实足以确认。
这就是为什么ItemTouchHelper不会给您附加方式的原因OnClickListener。
你有两个选择:
我写了一篇博客文章,描述了实现这种功能所需的步骤。
android:clickable=”true”其他点击,否则当您点击顶层时仍会触发底层组件。app:dragFromEdge=”{edge to drag from}"在为 SwipeRevealLayout 组件指定属性时指定它。如果您有兴趣查看完整的博客文章,请在此处查看:https : //android.jlelse.eu/android-recyclerview-swipeable-items-46a3c763498d
| 归档时间: |
|
| 查看次数: |
15762 次 |
| 最近记录: |