所以我试图在导航抽屉(例如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
引起的
知道为什么会这样吗?以及如何使其发挥作用?
答案 0 :(得分:0)
问题是因为mDrawerList.getChildAt(0)
会返回第一个可见子项,而不是列表中的第一项。
您可能希望在适配器类的getView()方法中实现结果:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
if(position == 0) {
// set bold text here
}
...
}