Android BaseAdapter上下文检索异常行为
我一定是错过了什么明显的东西,但找不到它 在下面的函数中,如果我尝试加载我的Drawable数组,我会得到一个null指针异常,表示getResource在null指针处被调用,而如果我直接传递Drawable并在上下文的帮助下将其膨胀,它就可以正常工作 我做错了什么?请帮忙Android BaseAdapter上下文检索异常行为,android,baseadapter,android-context,Android,Baseadapter,Android Context,我一定是错过了什么明显的东西,但找不到它 在下面的函数中,如果我尝试加载我的Drawable数组,我会得到一个null指针异常,表示getResource在null指针处被调用,而如果我直接传递Drawable并在上下文的帮助下将其膨胀,它就可以正常工作 我做错了什么?请帮忙 class MyDrawerAdapter extends BaseAdapter { private Context context; String[] drawerList; public MyDrawerAdap
class MyDrawerAdapter extends BaseAdapter {
private Context context;
String[] drawerList;
public MyDrawerAdapter(Context context) {
drawerList = context.getResources().getStringArray(R.array.Cat_array);
this.context = context;
}
/*
Drawable[] drawableArr ={MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home),
MrVector.inflate(context.getResources(),R.drawable.home)};
*/
@Override
public int getCount() {
return drawerList.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
if (position == 3 || position == 11) {
return 1;
}
if (position == 4) {
return 2;
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = null;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
if (getItemViewType(position) == 1) {
if (convertView == null) {
row = inflater.inflate(R.layout.divider, parent, false);
} else {
row = convertView;
}
row.setEnabled(false);
row.setOnClickListener(null);
}
if (getItemViewType(position) == 0) {
if (convertView == null) {
row = inflater.inflate(R.layout.drawer_list_item, parent, false);
} else {
row = convertView;
}
TextView titletext = (TextView) row.findViewById(R.id.drawer_text);
ImageView titleImage = (ImageView) row.findViewById(R.id.drawer_image);
titletext.setText(drawerList[position]);
//titleImage.setImageDrawable(drawableArr[position]);
titleImage.setImageDrawable(MrVector.inflate(context.getResources(),R.drawable.home));
}
if (getItemViewType(position) == 2) {
if (convertView == null) {
row = inflater.inflate(R.layout.header_listview_menu, parent, false);
} else {
row = convertView;
}
row.setEnabled(false);
row.setOnClickListener(null);
}
return row;
}
}这是一个我已经实施的解决方案,但如果有人能提供帮助,我仍然希望得到答案
class MyDrawerAdapter extends BaseAdapter {
private Context context;
String[] drawerList;
public MyDrawerAdapter(Context context) {
drawerList = context.getResources().getStringArray(R.array.Cat_array);
this.context = context;
}
@Override
public int getCount() {
return drawerList.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
if (position == 3 || position == 11) {
return 1;
}
if (position == 4) {
return 2;
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = null;
int layoutID = context.getResources().getIdentifier("icon_" + position, "drawable", context.getApplicationInfo().packageName);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
if (getItemViewType(position) == 1) {
if (convertView == null) {
row = inflater.inflate(R.layout.divider, parent, false);
} else {
row = convertView;
}
row.setEnabled(false);
row.setOnClickListener(null);
}
if (getItemViewType(position) == 0) {
if (convertView == null) {
row = inflater.inflate(R.layout.drawer_list_item, parent, false);
} else {
row = convertView;
}
TextView titletext = (TextView) row.findViewById(R.id.drawer_text);
ImageView titleImage = (ImageView) row.findViewById(R.id.drawer_image);
titletext.setText(drawerList[position]);
titleImage.setImageDrawable(MrVector.inflate(context.getResources(),layoutID));
}
if (getItemViewType(position) == 2) {
if (convertView == null) {
row = inflater.inflate(R.layout.header_listview_menu, parent, false);
} else {
row = convertView;
}
row.setEnabled(false);
row.setOnClickListener(null);
}
return row;
}
}调用代码中一定有问题。如何调用MyDrawerAdapter的构造函数?@davidjons mMyDrawerAdapter=new MyDrawerAdapter(this);在my Main Activity.中也发布日志cat请显示呼叫代码?相似问题