ListView聚焦的问题

时间:2015-07-12 13:46:49

标签: android listview view focus

在我的应用程序中,我有Fragment,其中包含GridViewListView以使用CursorAdapter显示项目。这两个视图中只有一个被启用,用户可以选择他想要查看项目的方式。

所以,我onCreateView的{​​{1}}方法

Fragment

gv = (GridView) v.findViewById(R.id.itemselect_gridview); lv = (ListView) v.findViewById(R.id.itemselect_listview); if (!UserPreferences.isViewStyleGrid(getActivity())) { showList(); } else { showGrid(); } showList的代码是:

showGrid

当应用程序调用{​​{1}}时,我无法使用d-pad(游戏控制器)导航private void showList() { gv.setVisibility(View.GONE); lv.setVisibility(View.VISIBLE); UserPreferences.getPreferences(getActivity()).edit() .putString(Constants.VIEWSTYLE, "list").commit(); } private void showGrid() { lv.setVisibility(View.GONE); gv.setVisibility(View.VISIBLE); UserPreferences.getPreferences(getActivity()).edit() .putString(Constants.VIEWSTYLE, "grid").commit(); } 。按d-pad键无效,只有触摸输入有效。 如果应用程序调用{​​{1}},则d-pad正常工作。 如果我在运行时从网格切换到列表,dpad也可以在showList上正常工作,切换使用前面提到的相同方法。什么可能导致这个问题?我尝试使用ListViewshowGrid但没有结果。

1 个答案:

答案 0 :(得分:0)

我意识到现在拨打showGridshowList为时尚早,所以我稍微更改了onCreateView

    if (UserPreferences.isViewStyleGrid(mFragment.getActivity())) {
        gv.post(new Runnable() {
            @Override
            public void run() {
                showGrid();
            }
        });
    } else {
        lv.post(new Runnable() {
            @Override
            public void run() {
                showList();
            }
        });
    }

这样,在完全初始化视图后调用这两个函数。