
遵循this博客文章上的指示,我可以在垂直列表适配器上跟踪选定的项目,但是无法通过按某些键单击或长按任何项目.
我已经创建了这种方法
public static boolean isConfirmbutton(KeyEvent event){ switch (event.getKeyCode()){ case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_button_A: return true; default: return false; }}拦截“确认”按钮,但是侦听KeyEvent的正确位置在哪里?如何区分点击和longclick?
解决方法:
我通过添加常规和长按按钮来编辑帖子中的代码:
@OverrIDepublic voID onAttachedToRecyclerVIEw(final RecyclerVIEw recyclerVIEw) { super.onAttachedToRecyclerVIEw(recyclerVIEw); mRecyclerVIEw = recyclerVIEw; // Handle key up and key down and attempt to move selection recyclerVIEw.setonKeyListener(new VIEw.OnKeyListener() { @OverrIDe public boolean onKey(VIEw v, int keyCode, KeyEvent event) { RecyclerVIEw.LayoutManager lm = recyclerVIEw.getLayoutManager(); // Return false if scrolled to the bounds and allow focus to move off the List if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { return tryMoveSelection(lm, 1); } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { return tryMoveSelection(lm, -1); } else if(KeyEventUtils.isConfirmbutton(event)){ VIEw vIEw = mRecyclerVIEw.findVIEwHolderForAdapterposition(mSelectedItem).itemVIEw; if((event.getFlags() & KeyEvent.FLAG_LONG_PRESS)==KeyEvent.FLAG_LONG_PRESS) { vIEw.performlongClick(); } else{ vIEw.performClick(); } return true; } } return false; } });}现在它可以正常工作,我不知道这是否是最优雅的方法.
总结以上是内存溢出为你收集整理的android-在RecyclerView视图上捕获KeyEvent全部内容,希望文章能够帮你解决android-在RecyclerView视图上捕获KeyEvent所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)