getView() 中的自定义适配器错误
Custom Adapter error in getView()
我有一个扩展 BaseAdapter
的 Custom
适配器,它用于导航抽屉。
但是由于某种原因,一旦我设置了我的列表视图适配器,我就得到了一个错误; NullPointException
;在 getView()
方法中,我在其中声明 ImageView
。
尽管进行了许多研究,但我不明白为什么。有谁知道?
该应用程序使用支持 v7
和 ActionBarActivity
谢谢!
public class DrawerItemAdapter extends BaseAdapter {
Context mContext;
int mLayoutResourceId;
ObjectDrawerItem mData[] = null;
// Constructor
public DrawerItemAdapter(Context context, int layoutResourceId, ObjectDrawerItem[] data) {
this.mContext = context;
this.mLayoutResourceId = layoutResourceId;
this.mData = data;
}
@Override
public int getCount() {
return mData.length;
}
@Override
public Object getItem(int position) {
return mData[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItem = convertView;
ObjectDrawerItem objectDrawerItem = mData[position];
LayoutInflater inflater = ((ActionBarActivity) mContext).getLayoutInflater();
inflater.inflate(mLayoutResourceId, parent, false);
ImageView iconImageView = (ImageView) listItem.findViewById(R.id.drawer_item_icon);
TextView titleTextView = (TextView) listItem.findViewById(R.id.drawer_item_title);
iconImageView.setImageDrawable(listItem.getResources().getDrawable(objectDrawerItem.getmIcon()));
titleTextView.setText(objectDrawerItem.getmTitle());
return listItem;
}
}
我正在查看这一行:
inflater.inflate(mLayoutResourceId, parent, false);
您好像忘记了将返回的视图赋值给listItem
使用inflater.findViewById()...
ImageView iconImageView = (ImageView) inflater.findViewById(R.id.drawer_item_icon);
TextView titleTextView = (TextView) inflater.findViewById(R.id.drawer_item_title);
用这个更改你的代码。
我有一个扩展 BaseAdapter
的 Custom
适配器,它用于导航抽屉。
但是由于某种原因,一旦我设置了我的列表视图适配器,我就得到了一个错误; NullPointException
;在 getView()
方法中,我在其中声明 ImageView
。
尽管进行了许多研究,但我不明白为什么。有谁知道?
该应用程序使用支持 v7
和 ActionBarActivity
谢谢!
public class DrawerItemAdapter extends BaseAdapter {
Context mContext;
int mLayoutResourceId;
ObjectDrawerItem mData[] = null;
// Constructor
public DrawerItemAdapter(Context context, int layoutResourceId, ObjectDrawerItem[] data) {
this.mContext = context;
this.mLayoutResourceId = layoutResourceId;
this.mData = data;
}
@Override
public int getCount() {
return mData.length;
}
@Override
public Object getItem(int position) {
return mData[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItem = convertView;
ObjectDrawerItem objectDrawerItem = mData[position];
LayoutInflater inflater = ((ActionBarActivity) mContext).getLayoutInflater();
inflater.inflate(mLayoutResourceId, parent, false);
ImageView iconImageView = (ImageView) listItem.findViewById(R.id.drawer_item_icon);
TextView titleTextView = (TextView) listItem.findViewById(R.id.drawer_item_title);
iconImageView.setImageDrawable(listItem.getResources().getDrawable(objectDrawerItem.getmIcon()));
titleTextView.setText(objectDrawerItem.getmTitle());
return listItem;
}
}
我正在查看这一行:
inflater.inflate(mLayoutResourceId, parent, false);
您好像忘记了将返回的视图赋值给listItem
使用inflater.findViewById()...
ImageView iconImageView = (ImageView) inflater.findViewById(R.id.drawer_item_icon);
TextView titleTextView = (TextView) inflater.findViewById(R.id.drawer_item_title);
用这个更改你的代码。