BaseExpandableListAdaptor를 확장하는 ExpandListAdapter 클래스의 LayoutInflator에서 널 포인터 예외가 발생합니다.LayoutInflator의 Null 포인터 예외
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class ExpandListAdapter extends BaseExpandableListAdapter{
private Context context;
private ArrayList<ExpandListGroup> groups;
public ExpandListAdapter(Context context, ArrayList<ExpandListGroup> groups){
this.context=context;
this.groups=groups;
}
public void addItem(ExpandListChild item, ExpandListGroup group){
if(!groups.contains(group)){
groups.add(group);
}
int index=groups.indexOf(group);
ArrayList<ExpandListChild> ch=groups.get(index).getItems();
ch.add(item);
groups.get(index).setItems(ch);
}
public Object getChild(int groupPosition, int childPosition){
ArrayList<ExpandListChild> chList=groups.get(groupPosition).getItems();
return chList.get(childPosition);
}
public long getChildId(int groupPosition, int childPosition){
return childPosition;
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent){
ExpandListChild child = (ExpandListChild) getChild(groupPosition, childPosition);
if (view == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
view = infalInflater.inflate(R.layout.expandlist_child_item, null);
}
TextView tv = (TextView) view.findViewById(R.id.tvChild);
tv.setText(child.getName().toString());
tv.setTag(child.getTag());
// TODO Auto-generated method stub
return view;
}
public int getChildrenCount(int groupPosition) {
ArrayList<ExpandListChild> chList = groups.get(groupPosition).getItems();
return chList.size();
}
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}
public int getGroupCount() {
return groups.size();
}
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isLastChild, View view, ViewGroup parent) {
ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition);
if (view == null) {
LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
view = inf.inflate(R.layout.two_lines_list_layout, null);
}
TextView tv = (TextView) view.findViewById(R.id.line_book);
tv.setText(group.getName());
TextView tv2 = (TextView) view.findViewById(R.id.line_author);
tv2.setText(group.getAuthor());
return view;
}
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
public boolean isChildSelectable(int arg0, int arg1) {
// TODO Auto-generated method stub
return true;
}
}
나는 줄에서 예외를 얻고있다 : LayoutInflater에서 infalInflater = (LayoutInflater에서) this.context.getSystemService (context.LAYOUT_INFLATER_SERVICE);
또한, 자사의 "정적 필드 Context.LAYOUT_INFLATER_SERVICE은 정적 인 방법으로 접근해야한다"라고 그 선에서 경고를 보여주는
는 제발 도와주세요 .. !!
정말로 고맙습니다. ExpandListAdapter를 인스턴스화 할 때 null 컨텍스트를 전달했습니다. 조각에서 호출 했으므로 getActivity()가 작동했습니다 ...! – user2602096