Java 在导航抽屉中将所选项目加粗,但在应用程序启动时无法将第一个项目加粗

Java 在导航抽屉中将所选项目加粗,但在应用程序启动时无法将第一个项目加粗,java,android,Java,Android,因此,我试图在导航抽屉中将所选项目的文本设置为粗体,就像Google Play应用程序一样,但我无法在首次启动应用程序时将第一个项目设置为粗体 这就是我用来让它工作的东西 private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> p

因此,我试图在导航抽屉中将所选项目的文本设置为粗体,就像Google Play应用程序一样,但我无法在首次启动应用程序时将第一个项目设置为粗体 这就是我用来让它工作的东西

private class DrawerItemClickListener implements
            ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            setNavDrawerItemNormal();
            TextView TV = (TextView) view.findViewById(R.id.text1);
            TV.setTypeface(null, Typeface.BOLD);
            selectItem(position);
        }
    }

    public void setNavDrawerItemNormal() {
        for (int i = 0; i < mDrawerList.getChildCount(); i++) {
            View view = mDrawerList.getChildAt(i);
            TextView TV = ((TextView) view.findViewById(R.id.text1));
            TV.setTypeface(null, Typeface.NORMAL);
        }
    }
LogCat说它是由java.lang.NullPointerException引起的 知道为什么会这样吗?如何使其工作?

问题在于mDrawerList.getChildAt0返回第一个可见的子项,而不是列表中的第一项

您可能希望在适配器类的getView方法中获得结果:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...

    if(position == 0) {
        // set bold text here
    }

    ...
}

希望您没有在setContentView之前添加这些行,并且抽屉列表已正确初始化。另外,尝试设置抽屉中的字体适配器,以便在没有onClick事件的情况下调用它
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...

    if(position == 0) {
        // set bold text here
    }

    ...
}