所以我做以下適配器可擴展的ListView:奇怪的空指針異常的ExpandableListView
class SubcategoriesAdapter extends BaseExpandableListAdapter {
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
View v=convertView;
if(v==null) v=layoutInflater.inflate(R.layout.tip_view, null, false);
((TextView)v.findViewById(R.id.title)).setText(data.subcategories.get(groupPosition).tips.get(childPosition).title);
((TextView)v.findViewById(R.id.content)).setText(data.subcategories.get(groupPosition).tips.get(childPosition).text);
return v;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
@Override
public int getGroupCount() {
return data.subcategories.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return data.subcategories.get(groupPosition).tips.size();
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return data.subcategories.get(groupPosition).tips.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public Object getGroup(int groupPosition) {
return data.subcategories.get(groupPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View v=convertView;
Tips.TipsSubcategory me=data.subcategories.get(groupPosition);
if(v==null) v=LayoutInflater.from(getContext()).inflate(R.layout.tips_subcategory_view, null, false);
/* ((TextView)v.findViewById(R.id.title)).setText(me.title);
Picasso.with(getActivity()).load(me.ad_url).into(((ImageView) v.findViewById(R.id.adImageView)));
Picasso.with(getActivity()).load(me.image_url).into((ImageView)v.findViewById(R.id.image)); */
return v;
}
}
當我加載此片段包含列表,我得到以下異常:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:715)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at biz.energit.cookingfridge.user.fragments.TipsCategory$SubcategoriesAdapter.getGroupView(TipsCategory.java:148)
這條線,它的指向,148是我吹的觀點線:
if(v==null) v=LayoutInflater.from(getContext()).inflate(R.layout.tips_subcategory_view, null, false);
我嘗試刪除i
,傳遞實際的父代而不是null
,並從碎片或通過其他方式獲取充氣器。我無能爲力。
更新:爲防萬一有人再次遇到此問題,我無法寫出答案,因爲有人將此標記爲重複。 問題是在我正在膨脹的XML中使用<view
而不是<View
。編者對此一無所知,但這個問題以這種方式表達自己。
[This is the evil line](http://grepcode.com/file/repo1.maven.org/maven2/org.robolectric/android-all/5.0.0_r2-robolectric-1/android/view/LayoutInflater的.java#715)。你應該使用調試器來知道爲什麼attrs.getAttributeValue(null,「class」);'返回null。 – Tom