Android listitem单击时崩溃

Android listitem单击时崩溃,android,listview,navigation-drawer,baseadapter,onitemclicklistener,Android,Listview,Navigation Drawer,Baseadapter,Onitemclicklistener,我有一个带有自定义listview的导航抽屉,我想让它在单击某个项目时,所选项目的文本会发生更改。 我遇到的问题是没有重新创建listview,也没有更改textcolor,即使我调用notifydatasetchanged()。我不知道是什么问题。谢谢:) McClick侦听器: public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { getSup

我有一个带有自定义listview的导航抽屉,我想让它在单击某个项目时,所选项目的文本会发生更改。 我遇到的问题是没有重新创建listview,也没有更改textcolor,即使我调用notifydatasetchanged()。我不知道是什么问题。谢谢:)

McClick侦听器:

    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame_main, new CampusLifeFragment()).commit();
            getActionBar().setTitle(mDrawerItems[i]);
            listAdapter = new DrawerListAdapter(LayoutInflater.from(this));
            listadapter.setSelectedItem(i);
            listAdapter.notifyDataSetChanged();
            mDrawerLayout.closeDrawer(mDrawerList);
        }
public void onItemClick(AdapterView AdapterView,视图视图,int i,long l){
getSupportFragmentManager().beginTransaction().replace(R.id.content\u frame\u main,新的CampusLifeFragment()).commit();
getActionBar().setTitle(mDrawerItems[i]);
listAdapter=new-DrawerListAdapter(LayoutInflater.from(this));
listadapter.setSelectedItem(i);
listAdapter.notifyDataSetChanged();
mDrawerLayout.closeDrawer(mDrawerList);
}
抽屉式适配器:

public class DrawerListAdapter extends BaseAdapter {

        private LayoutInflater inflater;
        private int mSelectedItem;
        private int[] mDrawerDrawables = {R.drawable.ic_settings, R.drawable.ic_about};

        public DrawerListAdapter(LayoutInflater inflater) {
            this.inflater = inflater;
        }

        public int getSelectedItem() {
            return mSelectedItem;
        }

        public void setSelectedItem(int i) {
            mSelectedItem = i;
        }

        @Override
        public int getCount() {
            return mDrawerItems.length;
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

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

            if (position <= 3) {
                convertView = inflater.inflate(R.layout.layout_drawer_primary, null);
                TextView titlePrimary = (TextView) convertView.findViewById(R.id.textView_drawer_list_primary);
                titlePrimary.setText(mDrawerItems[position]);
                titlePrimary.setTextColor((mSelectedItem == position) ? Color.parseColor("#3f51b5") : Color.parseColor("#454545"));

                return convertView;
            } else {
                    convertView = inflater.inflate(R.layout.layout_drawer_secondary, null);
                    TextView titlesecondary = (TextView) convertView.findViewById(R.id.textView_drawer_list_secondary);
                    titlesecondary.setText(mDrawerItems[position]);

                    ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView_drawer_list_secondary);
                    imageView.setImageResource(mDrawerDrawables[position - 4]);

                    return convertView;
                }

            }
        }
public类drawerlistatadapter扩展了BaseAdapter{
私人充气机;
私有内部mSelectedItem;
private int[]mDrawerDrawables={R.drawable.ic_设置,R.drawable.ic_about};
公共抽屉式空气调节器(充气式空气调节器){
这个。充气机=充气机;
}
public int getSelectedItem(){
返回mSelectedItem;
}
公共无效集合选择项(int i){
mSelectedItem=i;
}
@凌驾
public int getCount(){
返回mDrawerItems.length;
}
@凌驾
公共对象getItem(int i){
返回null;
}
@凌驾
公共长getItemId(int i){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){

如果(位置如果您只想更改颜色,请将listAdapter另存为成员变量,如

protected void onCreate(Bundle savedInstanceState) {
    mListAdapter = new DrawerListAdapter(LayoutInflater.from(this));
}
然后

public void onItemClick(AdapterView AdapterView,视图视图,int i,long l){
getSupportFragmentManager().beginTransaction().replace(R.id.content\u frame\u main,新的CampusLifeFragment()).commit();
getActionBar().setTitle(mDrawerItems[i]);
mListAdapter.setItemChecked(i);
mListAdapter.notifyDataSetChanged();
mDrawerLayout.closeDrawer(mDrawerList);
}
或者,如果要制作新适配器

public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame_main, new CampusLifeFragment()).commit();
    getActionBar().setTitle(mDrawerItems[i]);
    DrawerListAdapter listAdapter = new DrawerListAdapter(LayoutInflater.from(this));
    mDrawerLayout.closeDrawer(mDrawerList);
    mDrawerList.setAdapter(listAdapter);
    listAdapter.setItemChecked(i);
    listAdapter.notifyDataSetChanged();
}
public void onItemClick(AdapterView AdapterView,视图视图,int i,long l){
getSupportFragmentManager().beginTransaction().replace(R.id.content\u frame\u main,新的CampusLifeFragment()).commit();
getActionBar().setTitle(mDrawerItems[i]);
DroperListAdapter=新的DroperListAdapter(LayoutFlater.from(this));
mDrawerLayout.closeDrawer(mDrawerList);
mDrawerList.setAdapter(listAdapter);
listAdapter.setItemChecked(i);
listAdapter.notifyDataSetChanged();
}

你在应用程序中使用了哪个
主题
?发布你的
style.xml
。我已经发布了我的主题
protected void onCreate(Bundle savedInstanceState) {
    mListAdapter = new DrawerListAdapter(LayoutInflater.from(this));
}
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame_main, new CampusLifeFragment()).commit();
    getActionBar().setTitle(mDrawerItems[i]);
    mListAdapter.setItemChecked(i);
    mListAdapter.notifyDataSetChanged();
    mDrawerLayout.closeDrawer(mDrawerList);
}
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame_main, new CampusLifeFragment()).commit();
    getActionBar().setTitle(mDrawerItems[i]);
    DrawerListAdapter listAdapter = new DrawerListAdapter(LayoutInflater.from(this));
    mDrawerLayout.closeDrawer(mDrawerList);
    mDrawerList.setAdapter(listAdapter);
    listAdapter.setItemChecked(i);
    listAdapter.notifyDataSetChanged();
}