带有适配器的片段中的Android NullPointerException

带有适配器的片段中的Android NullPointerException,android,listview,android-fragments,adapter,Android,Listview,Android Fragments,Adapter,我正在开发一个基于“一个活动-多个片段”模式的应用程序。在本例中,我使用改型从api获取对象列表,现在我想将这些对象放在片段内的Listview中。我正在使用一个适配器来“填充”这个列表视图 调用success()后,应用程序崩溃。这是短日志: 4-13 19:01:30.647 1968-1968/com.plusplus.i.jongerenparticipatieplatfrom E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com

我正在开发一个基于“一个活动-多个片段”模式的应用程序。在本例中,我使用改型从api获取对象列表,现在我想将这些对象放在片段内的Listview中。我正在使用一个适配器来“填充”这个列表视图

调用success()后,应用程序崩溃。这是短日志:

4-13 19:01:30.647    1968-1968/com.plusplus.i.jongerenparticipatieplatfrom E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.plusplus.i.jongerenparticipatieplatfrom, PID: 1968
java.lang.NullPointerException
        at android.view.LayoutInflater.from(LayoutInflater.java:211)
        at com.plusplus.i.jongerenparticipatieplatfrom.adapter.DmsAdapter.getView(DmsAdapter.java:58)
        at android.widget.AbsListView.obtainView(AbsListView.java:2255)
        at android.widget.ListView.makeAndAddView(ListView.java:1790)
        at android.widget.ListView.fillDown(ListView.java:691)
        at android.widget.ListView.fillFromTop(ListView.java:752)
        at android.widget.ListView.layoutChildren(ListView.java:1616)
        at android.widget.AbsListView.onLayout(AbsListView.java:2087)...`
我猜是出了什么问题,因为我在OnCreateView()方法中执行所有操作

代码如下:

public class QuestionFragment extends Fragment implements Callback<List<DtoDms>> {
    private DmsAdapter dmsAdapter;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        dmsAdapter = new DmsAdapter(getActivity());
        View rootView = inflater.inflate(R.layout.fragment_question, container, false);

        ListView listView  = (ListView) rootView.findViewById(R.id.dmsList);
        listView.setAdapter(dmsAdapter);
        View emptyView = rootView.findViewById(R.id.empty);
        listView.setEmptyView(emptyView);

        getJppService().getOpenDms(1, this);
        return rootView;
    }

    @Override
    public void success(List<DtoDms> dtoDmses, Response response) {

        Toast.makeText(getActivity(), "Ok dit werkt al", Toast.LENGTH_LONG).show();
        dmsAdapter.setOpenDms(dtoDmses);
    }

    @Override
    public void failure(RetrofitError error) {

        Toast.makeText(getActivity(), "Fout", Toast.LENGTH_LONG).show();
    }
}
公共类QuestionFragment扩展片段实现回调{
专用DMS适配器;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
dmsAdapter=新的dmsAdapter(getActivity());
视图根视图=充气机。充气(R.layout.fragment\u问题,容器,错误);
ListView ListView=(ListView)rootView.findViewById(R.id.dmsList);
setAdapter(dmsAdapter);
View emptyView=rootView.findviewbyd(R.id.empty);
setEmptyView(emptyView);
getJppService().getOpenDms(1,this);
返回rootView;
}
@凌驾
公共作废成功(列出DTODMSE、响应){
Toast.makeText(getActivity(),“Ok dit werkt al”,Toast.LENGTH_LONG.show();
dmsAdapter.setOpenDms(dtoDmses);
}
@凌驾
公共无效失败(错误){
Toast.makeText(getActivity(),“Fout”,Toast.LENGTH_LONG.show();
}
}
编辑:下面是适配器类

public class DmsAdapter extends BaseAdapter {
private final Context context;
private List<DtoDms> openDms;

public DmsAdapter(Context context) {
    this.context = context;
    this.openDms = new ArrayList();
}

public void setOpenDms(List<DtoDms> openDms) {
    this.openDms = openDms;
    notifyDataSetChanged();
}

@Override
public int getCount() {
    return openDms.size();
}

@Override
public DtoDms getItem(int position) {
    return openDms.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final DtoDms dms = getItem(position);
     ViewHolder viewHolder;
    if (convertView != null) {
        viewHolder = (ViewHolder) convertView.getTag();
    } else {
        convertView = from(context).inflate(R.layout.dms_item, parent, false);
        viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
    }
  //  viewHolder.dateTextView.setText(new SimpleDateFormat("dd/MM/yyyy").format(dms.getEndDate()));
    viewHolder.questionTextView.setText(dms.getQuestion());
    viewHolder.extraTextView.setText(dms.getExtraInfo());
    return convertView;
}

static class ViewHolder {
    TextView dateTextView;
    TextView questionTextView;
    TextView extraTextView;

    public ViewHolder(View view) {
   //     dateTextView = (TextView) view.findViewById(R.id.dmsDate);
        questionTextView = (TextView) view.findViewById(R.id.dmsQuestion);
        extraTextView = (TextView) view.findViewById(R.id.dmsExtra);
    }
}
公共类DmsAdapter扩展了BaseAdapter{ 私人最终语境; 私有列表openDms; 公共DmsAdapter(上下文){ this.context=上下文; this.openDms=newarraylist(); } 公共void setOpenDms(列出openDms){ this.openDms=openDms; notifyDataSetChanged(); } @凌驾 public int getCount(){ 返回openDms.size(); } @凌驾 公共DtoDms getItem(内部位置){ 返回openDms.get(位置); } @凌驾 公共长getItemId(int位置){ 返回位置; } @凌驾 公共视图getView(int位置、视图转换视图、视图组父视图){ 最终DtoDms dms=getItem(位置); 持票人持票人; if(convertView!=null){ viewHolder=(viewHolder)convertView.getTag(); }否则{ convertView=from(上下文)。充气(R.layout.dms_项,父项,false); viewHolder=新的viewHolder(转换视图); convertView.setTag(viewHolder); } //viewHolder.dateTextView.setText(新的SimpleDataFormat(“dd/MM/yyyy”).format(dms.getEndDate()); viewHolder.questionTextView.setText(dms.getQuestion()); viewHolder.extraTextView.setText(dms.getExtraInfo()); 返回视图; } 静态类视窗夹{ 文本视图日期文本视图; 文本视图问题文本视图; 文本视图外部文本视图; 公共视图持有者(视图){ //dateTextView=(TextView)view.findViewById(R.id.dmsDate); questionTextView=(TextView)view.findViewById(R.id.dmsQuestion); extraTextView=(TextView)view.findViewById(R.id.dmsExtra); } } }

编辑2:成功中的断点表示上下文不为空:


提前谢谢

NullPointer似乎发生在DmsAdapter类中(第58行)。请发布更多代码=)您能显示您的DmsAdapter类吗?我已将代码添加到问题中。行convertView=from(context)。充气(R.layout.dms_item,parent,false);对我来说没有意义。您的from(上下文)实现在哪里?或者这是对LayoutInflater.from(上下文)的调用?@MichaelKrause这是对LayoutInflator.from的调用是的