我正在开发一个基于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
提前致谢!