美文网首页
TV端使用GridView第一次选中不触发onItemSelec

TV端使用GridView第一次选中不触发onItemSelec

作者: 奈蜇 | 来源:发表于2018-11-09 10:58 被阅读0次

    TV端使用GridView偶然发现的BUG,为其设置了setOnItemSelectedListener,但当焦点第一次进入的时候不会触发onItemSelected。
    嗯哼 百度咯,有一些解决的办法。

    比如使用反射调用fireOnSelected方法

      try {
                Method fireOnSelected = AdapterView.class.getDeclareMethod("fireOnSelected ");
                fireOnSelected.setAccessible(true);
                fireOnSelected.invoke(mGrid); //运行该方法
            } catch (Exception e) {
                e.printStackTrace();
            }
    

    作者:阿曌
    来源:CSDN
    原文:https://blog.csdn.net/XieYupeng520/article/details/50515537

    偷鸡解决:

    反射可以不用就不用嘛,为什么不偷鸡呢。

    提出一个很简单的方法解决,在用户感觉不到情况下触发掉这个第一次不就好了嘛。

                mGridView.setSelection(-1);
                //需要延迟100ms再次执行setSelection,否则不触发onItemSelected。
                mGridView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mGridView.setSelection(0);
                    }
                },100);
    

    相关文章

      网友评论

          本文标题:TV端使用GridView第一次选中不触发onItemSelec

          本文链接:https://www.haomeiwen.com/subject/axvnxqtx.html