Мое приложение состоит из двух Fragments
, которые должны получать информацию от MainActivity
.В MainActivity
данные загружаются и помещаются в ArrayLists
, затем они должны быть представлены в первом Fragment
.Поэтому я создал метод, который передает ArrayLists
первому Fragment
.
Проблема, с которой я столкнулся, заключается в том, что я получаю NullPointerException
на линии mContactsAdapter = new SimpleAdapter(...)
в моем классе Fragment
.Но я не понимаю, почему это так, поскольку я настроил Adapter
в методе onCreateView
.Это неправильно настроено?
My MainActivity:
public class MainActivity extends AppCompatActivity {
ArrayList<HashMap<String, String>> contactList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contactList = new ArrayList<>();
}
public void FillAndPresent() {
/***
* fill ArrayLists
* ...
*/
CallsFragment fragment = new CallsFragment();
((CallsFragment) fragment).show(contactList);
}
}
Мой класс фрагмента:
public class CallsFragment extends Fragment{
private BaseAdapter mContactsAdapter;
private final List<HashMap<String, String>> mContactsListItems = new ArrayList<>();
public CallsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_calls, container, false);
((ListView) view.findViewById(R.id.list))
.setAdapter(mContactsAdapter);
return view;
}
public void show(ArrayList c){
mContactsAdapter = new SimpleAdapter(
getActivity(), mContactsListItems,
R.layout.list_item, new String[]{"price", "brand",
"dist"}, new int[]{R.id.price,
R.id.brand, R.id.dist});
mContactsListItems.addAll(c);
mContactsAdapter.notifyDataSetChanged();
((ListView) getActivity().findViewById(R.id.list))
.setAdapter(mContactsAdapter);
}
}