I have an Activity which holds a ViewPager
with 2 Fragments. One fragment is for adding items to ListView
and another fragment is holding the ListView
.
I've been trying for almost 3 days now without any positive results. How do I update the other fragment's ListView
from the first fragment?
I'm trying to call the method that updates ListView
from the Activity that holds ViewPager
but it doesn't work.
Calling the method from ViewPager
activity :
@Override
public void onPageSelected(int position) {
library.populateListView(getApplicationContext());
aBar.setSelectedNavigationItem(position);
}
This is the populateListView
method:
public void populateListView(Context context){
CustomListViewAdapter customAdapter = new CustomListViewAdapter(getDatabaseArrayList(context), getActivity());
if (lView != null)
{
lView.setAdapter(customAdapter);
}
customAdapter.notifyDataSetChanged();
}
However this doesn't work because the lView variable (ListView) is null because the fragment isn't shown at the moment when this is being called.
I am assuming that function populateListView()
is a function of the Fragment containing the ListView
. You are calling populateListView()
on every call to onPageSelected
. Should you not check what is the position that is being selected. Anyway the populateListView()
method should be a public method of the Fragment containing ListView
. And You Can Instantiate The Fragment from the Viewpager
adapter in the Activity and than call this method. In That way the listView
should not be null.
@Override
public void onPageSelected(int position) {
ListViewFragment frag=(ListViewFragment)adapter.instantiateItem(viewPager, 1);
//here adapter is the ViewPager Adapter and you must supply the viewpager that contains
//the fragments and also the position of the fragment to instantiate.
//For example 0 or 1 etc.
frag.populateListView(getApplicationContext());
aBar.setSelectedNavigationItem(position);
}