带有Adapter的片段中的Android NullPointerException

时间:2015-04-13 23:06:01

标签: android listview android-fragments adapter

我正在开发一个基于One活动的应用程序 - 多个片段模式。在这种情况下,我使用改进来从api获取对象列表,现在我想将它们放在片段内的Listview中。我正在使用适配器来“填充”这个Listview。

在succes()调用后,应用程序崩溃了。这是简短的日志:

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();
    }
}

编辑:这是适配器类

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);
    }
}

}

编辑2:断点成功说上下文不为空: http://i.stack.imgur.com/QUnfG.png

提前致谢!

0 个答案:

没有答案