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

时间:2015-06-08 00:48:41

标签: android android-recyclerview listeners

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

  1. 我注意到它没有支持点击监听器;我通过向每个列表项添加一个单击侦听器来修复它。 (RecyclerView onClick
  2. 单击列表项时,它不会显示lolipop的不错点击动画;我通过将以下属性添加到listitem XML来解决这个问题:android:background="?android:attr/selectableItemBackground"RecyclerView onItemClick effect in L
  3. 我的实际问题:当我点击RecyclerView中的列表项时,会立即通知收听者;我不喜欢这样,因为在点击监听器进入下一个活动之前,用户无法看到点击动画完成。
  4. 如何在点击时使RecyclerView的行为更像ListView,以便用户能够在通知点击监听器之前看到完成点击动画?

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

    下面是一个android工作室项目存储库的链接,该工作区有ListViewRecyclerView并排以帮助演示此问题:https://github.com/ericytsang/question.listview-vs-recyclerview

    非常感谢!

1 个答案:

答案 0 :(得分: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();

我用这个

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