【问题标题】:How to get View in RecyclerView.Adapter for Snackbar?如何在 RecyclerView.Adapter 中获取 Snackbar 的视图?
【发布时间】:2015-09-24 09:12:56
【问题描述】:

我正在通过 article 的帮助实现 滑动 并拖动 RecyclerView。在删除项目时,我想显示 SnackBar 但显示 SnackBar 需要查看。我不知道如何在RecyclerAdapter 的函数中获取View

我的代码:

public void onItemDismiss(int position) {
        notes.remove(position);
        notifyItemRemoved(position);
        /* Show SnackBar */
    }

编辑:我的问题与this question 不同。我在实施 SwipetoDismiss 时没有任何问题。我已成功实施。但我想显示一个 SnackBar,以便通知用户并撤消。我在显示 SnackBar 未实现 onSwiped() 时遇到问题。

【问题讨论】:

  • 创建一个接口以传入视图+一个整数,通过在您的活动或片段中实现将其用作回调。
  • 我已经修改了我通过 RecyclerAdapter 实现的接口。但是对于回调,只能使用 ItemTouchHelper.Callback。要进行 Swipe,我们必须在此回调中重写 onSwiped 方法
  • 看看我的工作示例。
  • 与该问题无关@JaredBurrows

标签: android android-recyclerview


【解决方案1】:

修改您的方法并将RecyclerView 作为参数传递,以便您获得视图

public void onItemDismiss(int position,RecyclerView rv) {
        notes.remove(position);
        notifyItemRemoved(position);
        /* Show SnackBar */
        Snackbar.make(rv, R.string.snackbar_text, Snackbar.LENGTH_LONG).show(); 
    }

编辑

private final ItemTouchHelperAdapter mAdapter;
private final RecyclerView rv;
public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter,RecyclerView rv) {
    mAdapter = adapter;
    this.rv=rv;
}

然后通过

 @Override
    public void onSwiped(ViewHolder viewHolder, int direction) {
        mAdapter.onItemDismiss(viewHolder.getAdapterPosition(),rv);
    }

【讨论】:

  • 在“SimpleItemTouchHelperCallback”的“onSwiped”方法上显示错误
  • onItemDismiss (int, RecyclerView) in ItemTouchHelper 不能应用到 (int)
  • 在 onSwiped() ViewHolder 作为参数传递。有没有办法通过 ViewHolder 获取 View?
  • 你能在你调用onSwiped()的地方发布代码吗,你必须传递位置和rv作为参数
  • 我在 SimpleItemTouchHelperCallback 中调用它。你可以在文章中看到它。我的实现是一样的。
【解决方案2】:

您可以通过对上下文进行类型转换来使用 Android 的内容视图

Activity activity=(Activity) context;

并在小吃店中使用以获取视图

Snackbar.make(activity.findViewById(android.R.id.content),"Hello",BaseTransientBottomBar.LENGTH_LONG).show

【讨论】:

  • 为什么你更喜欢这种方法而不是接受的答案?这种方法有好处吗?它是否利用了新的语法,或者解决了任何特定的限制?
  • 这只是在 RecylerView.Adapter 中获取视图的另一种方法。
猜你喜欢
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 2017-07-05
  • 2017-04-10
  • 1970-01-01
  • 2016-12-01
  • 2020-06-24
相关资源
最近更新 更多