问题描述
这是我第一次在StackOverflow中提出问题,我想向您展示我的代码,如下所示:
SecondFragment类
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_second,container,false);
listView = (ExpandableListView) view.findViewById(R.id.expand_list);
final List<String> listGroup = new ArrayList<>();
listGroup.add("Menu 1");
listGroup.add("Menu 2");
listGroup.add("Menu 3");
List<Makanan> listItem1 = new ArrayList<>();
List<Makanan> listItem2 = new ArrayList<>();
List<Makanan> listItem3 = new ArrayList<>();
listItem1.add(new Makanan("Menu 1","Ikan","Telur dan Susu","Panjang","Bandung"));
listItem2.add(new Makanan("Menu 2","Bandung"));
listItem3.add(new Makanan("Menu 3","Bandung"));
final HashMap<String,List<Makanan>> lstItemsGroup = new HashMap<>();
this.mainPresenter.addList(listGroup.get(0),listItem1);
this.mainPresenter.addList(listGroup.get(1),listItem2);
this.mainPresenter.addList(listGroup.get(2),listItem3);
final ListMakanan listMakanan = new ListMakanan(getActivity(),listGroup,lstItemsGroup);
listView.setAdapter(listMakanan);
FloatingActionButton fab = view.findViewById(R.id.fab);
fab.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.changePage(3);
}
});
return view;
}
MainPresenter类
public class MainPresenter {
protected final HashMap<String,List<Makanan>> makananList;
protected IMainActivity ui;
public MainPresenter(IMainActivity active){
this.ui = active;
this.makananList = new HashMap<String,List<Makanan>>();
}
public void addList(String title,List<Makanan> listMakanan){
makananList.put(title,listMakanan);
this.ui.updateList(this.makananList);
this.ui.resetAddForm();
}
}
问题是,为什么不能在MainPresenter类中使用方法addList()添加/放置我的hashMap?
你们能解决这个问题吗?
非常感谢您。
解决方法
您绝对不要那样做。由makananList引起的空点异常是在addList方法中初始化的。除了在提供MainPresenter实例之前调用方法。
如下所示:
MainPresenter mp = new MainPresenter (active) mp.addList(parameters)