android - RecyclerView onclick 监听器在点击动画完成之前触发

标签 android android-recyclerview listeners

我正在玩新的 RecyclerView。并遇到了一些问题:

  1. 我注意到它不支持点击监听器;我通过为每个列表项添加一个点击监听器来解决这个问题。 ( RecyclerView onClick )
  2. 单击列表项时,不会显示 lolipop 漂亮的单击动画;我通过将以下属性添加到列表项 XML 来解决此问题:android:background="?android:attr/selectableItemBackground" ( RecyclerView onItemClick effect in L )
  3. 我的实际问题:当我点击 RecyclerView 中的列表项时,监听器会立即收到通知;我不喜欢这样,因为在点击监听器转到下一个 Activity 或其他内容之前,用户无法看到点击动画完成。

如何让 RecyclerView 在被点击时表现得更像 ListView,以便用户能够在点击监听器收到通知之前看到点击动画完成?

我知道我可以通过使用 View.postDelayed 简单地解决这个问题,但这似乎不是最好的解决方案,因为在延迟期间,用户可能可以点击更多列出项目。

下面是一个指向 android studio 项目的存储库的链接,该项目同时具有 ListViewRecyclerView 以帮助演示问题:https://github.com/ericytsang/question.listview-vs-recyclerview

非常感谢!

最佳答案

我遇到了同样的问题。我正在处理 fragment 并在单击列表项时替换 fragment ,但没有显示点击动画。所以,我用启动另一个 Activity 的代码替换了 fragment 代码,这解决了我的问题。你说在点击监听器进入另一个“Activity 或其他东西”之前动画还没有完成,但对我来说有效。

安装了这个

NewFragment newFragment = NewFragment.newInstance();
FragmentTransaction ft = (getFragmentManager()).beginTransaction();
ft.replace(R.id.fragment_container, newFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();

我用这个

Intent transitionIntent = new Intent(getActivity(), DetailActivity.class);
startActivity(transitionIntent);

关于android - RecyclerView onclick 监听器在点击动画完成之前触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30699929/

相关文章:

Android:保存少量数据最简单的方法是什么?

java - openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

java - itemStateChanged 和 actionPerformed 问题

java - 监听器和计时器之间的通信

java - 使用 url 加载 imaeview 的任何更快的方法

java - 提出 SOAP 请求时出现问题

android - 使 AppBarLayout/CollapsingToolbarLayout 对 ViewPager 中的 RecyclerView 中的滚动使用react

android - ScrollView 在内部 3 个 recyclerviews 中滚动不流畅

android - RecyclerView onBindViewHolder 仅在 getItemViewType 更改时调用

Java,我这个关键检测类建对了吗?