Android ListView聚焦的问题

Android ListView聚焦的问题,android,listview,view,focus,Android,Listview,View,Focus,在我的应用程序中,我有一个包含GridView和ListView的片段,用于使用游标适配器显示项目。仅启用这两个视图中的一个,用户可以选择查看项目的方式 所以,在片段的onCreateView方法中 showList和showGrid的代码为: 当应用程序调用showList时,我无法使用d-pad游戏控制器在ListView中导航。按d-pad键无效,仅触摸输入有效。 如果应用程序调用showGrid,则d-pad工作正常。 如果我在运行时从网格切换到列表,dpad也会在ListView上正常

在我的应用程序中,我有一个包含GridView和ListView的片段,用于使用游标适配器显示项目。仅启用这两个视图中的一个,用户可以选择查看项目的方式

所以,在片段的onCreateView方法中

showList和showGrid的代码为:

当应用程序调用showList时,我无法使用d-pad游戏控制器在ListView中导航。按d-pad键无效,仅触摸输入有效。 如果应用程序调用showGrid,则d-pad工作正常。
如果我在运行时从网格切换到列表,dpad也会在ListView上正常工作,切换使用前面提到的相同方法。什么会导致这个问题?我尝试使用lv.setFocusabletrue和lv.requestFocus,但没有结果。

我意识到调用showGrid和showList为时过早,所以我稍微更改了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();
            }
        });
    }
这样,两个函数都会在视图完全初始化后调用

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();
}
    if (UserPreferences.isViewStyleGrid(mFragment.getActivity())) {
        gv.post(new Runnable() {
            @Override
            public void run() {
                showGrid();
            }
        });
    } else {
        lv.post(new Runnable() {
            @Override
            public void run() {
                showList();
            }
        });
    }