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

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第一次选中不触发onItemSelected)