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

时间:2014-02-28 05:08:04

标签: java android

所以我试图在导航抽屉(例如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);
        }
    }

我尝试在onCreate()方法中添加它,但由于第二行而引发错误

View view = mDrawerList.getChildAt(0);
TextView TV = (TextView) view.findViewById(R.id.text1);
TV.setTypeface(null, Typeface.BOLD);

LogCat说这是由java.lang.NullPointerException引起的 知道为什么会这样吗?以及如何使其发挥作用?

1 个答案:

答案 0 :(得分:0)

问题是因为mDrawerList.getChildAt(0)会返回第一个可见子项,而不是列表中的第一项。

您可能希望在适配器类的getView()方法中实现结果:

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

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

    ...
}