在单击动画完成之前,RecyclerView onclick侦听器将触发

Eri*_*ric 5 android listeners android-recyclerview

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

  1. 我注意到它没有支持点击监听器; 我通过向每个列表项添加一个单击侦听器来修复它.(RecyclerView onClick)
  2. 单击列表项时,它不会显示lolipop的漂亮点击动画; 我固定,通过添加下列属性的列表项XML: android:background="?android:attr/selectableItemBackground"(以L RecyclerView onItemClick效果)
  3. 我的实际问题:当我点击RecyclerView中的列表项时,会立即通知监听器; 我不喜欢这样,因为在点击监听器转到下一个活动之前,用户无法看到完成点击动画.

如何在单击时使RecyclerView的行为更像ListView,以便用户能够在通知单击侦听器之前看到完成单击动画?

我知道我可以通过使用来解决这个问题,View.postDelayed但这似乎不是最佳解决方案,因为在延迟期间,用户可能能够点击更多列表项.

下面是具有一个机器人工作室项目的存储库中的链接ListViewRecyclerView并排帮助演示问题:https://github.com/ericytsang/question.listview-vs-recyclerview

非常感谢!

小智 1

我遇到过同样的问题。我正在使用片段并在单击列表项时替换片段,但单击动画不显示。因此,我用启动另一个 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();
Run Code Online (Sandbox Code Playgroud)

我用这个

Intent transitionIntent = new Intent(getActivity(), DetailActivity.class);
startActivity(transitionIntent);
Run Code Online (Sandbox Code Playgroud)