I'm trying to make a custom adapter for my navigation drawer, and keep getting a nullpointer exception on the layout inflater. I've tried declaring the LayoutInflater
variable inside and outside the getView
method as suggested in other posts, but to no avail.
Below is my Custom Adapter Class
Context mContext;
private ArrayList<String> mValues = new ArrayList<String>();
LayoutInflater inflater;
public DrawerListAdapter(Context context, ArrayList<String> mValues) {
super(context, R.layout.drawer_layout, mValues);
this.mContext = mContext;
this.mValues = mValues;
inflater = LayoutInflater.from(mContext);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if(rowView == null){
rowView = inflater.inflate(R.layout.drawer_layout, parent, false);
} else{
Log.d("DEBUG", "rowView is not null");
}
TextView textView = (TextView) rowView.findViewById(R.id.drawer_text);
switch (position) {
case 0:
textView.setBackgroundColor(mContext.getResources().getColor(R.color.materialRed));
textView.setText(mValues.get(position));
break;
case 1:
textView.setBackgroundColor(mContext.getResources().getColor(R.color.materialLightBlue));
textView.setText(mValues.get(position));
break;
case 2:
textView.setBackgroundColor(mContext.getResources().getColor(R.color.materialLightGreen));
textView.setText(mValues.get(position));
break;
case 3:
textView.setBackgroundColor(mContext.getResources().getColor(R.color.materialLime));
textView.setText(mValues.get(position));
break;
}
return rowView;
}
Here is where I call it in my MainActivity within the onCreate()
method
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
mDrawerTitles.add("Politics");
mDrawerTitles.add("Technology");
mDrawerTitles.add("Sports");
mDrawerTitles.add("Books");
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(android.R.id.list);
DrawerListAdapter drawerAdapter = new DrawerListAdapter(this, mDrawerTitles);
mDrawerList.setAdapter(drawerAdapter);
//mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
new HttpJSONLoader().execute();
}
and my stack trace
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at android.view.LayoutInflater.from(LayoutInflater.java:219)
at net.rmoreno.lemonlime.DrawerListAdapter.<init>(DrawerListAdapter.java:26)
at net.rmoreno.lemonlime.MainActivity.onCreate(MainActivity.java:49)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)