Java 如何获取对ListFragment';来自MainActivity的适配器和基础数据?
我有一个用数据填充的ListFragment:Java 如何获取对ListFragment';来自MainActivity的适配器和基础数据?,java,android,Java,Android,我有一个用数据填充的ListFragment: String list1 = {...arbitrary data...}; adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, list1); 但是接下来呢?对不起,我是Android的初学者 以下是我的主要活动: public class MainActivity extends AppCompatActivi
String list1 = {...arbitrary data...};
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, list1);
但是接下来呢?对不起,我是Android的初学者
以下是我的主要活动:
public class MainActivity extends AppCompatActivity implements MyListFragment.Communicator, EditFragment.EditCallback{
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
FragmentTransaction fragmentTransaction2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyListFragment myListFragment = new MyListFragment();
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragContainer, myListFragment, "MyListFragment");
fragmentTransaction.commit();
}
@Override
public void onMyListItemClick(String name, int position) {
EditFragment editFragment = new EditFragment();
Bundle args = new Bundle();
args.putString("name", name);
args.putInt("position", position);
editFragment.setArguments(args);
fragmentTransaction2 = getFragmentManager().beginTransaction();
fragmentTransaction2.replace(R.id.fragContainer, editFragment);
fragmentTransaction2.addToBackStack(null);
fragmentTransaction2.commit();
}
@Override
public void updateItem(int position, String textUpdated) {
//getting a reference to ListFragment:
MyListFragment myListFragment = (MyListFragment) getFragmentManager().findFragmentByTag("MyListFragment");
ArrayAdapter adapter = (ArrayAdapter) myListFragment.getListView().getAdapter();
}
}
您可以在updateItem中更新后调用adapter.notifyDataSetChanged(),因为您已经获得了适配器。而且不需要创建任何新方法。以下是ArrayAdapter的链接,以了解更多信息
在MyListFragment中创建一个方法更新,并在MainActivity中调用它。更新可以更新你的列表。天哪,你真的救了我一天,谢谢@javastarter,您想从片段调用方法,并且您的方法处于活动状态,对吗?@HirenPatel,我需要通过接口通信从另一个片段访问ListFragment中的数据。正如Raghunandan建议的那样,我刚刚调用了myListFragment.changeItem,实际的实现保存在ListFragment中。谢谢!我不必实例化适配器,只需在ListFragment中调用实现的方法并在那里设置notifyDatasetChanged。
public class MainActivity extends AppCompatActivity implements MyListFragment.Communicator, EditFragment.EditCallback{
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
FragmentTransaction fragmentTransaction2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyListFragment myListFragment = new MyListFragment();
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragContainer, myListFragment, "MyListFragment");
fragmentTransaction.commit();
}
@Override
public void onMyListItemClick(String name, int position) {
EditFragment editFragment = new EditFragment();
Bundle args = new Bundle();
args.putString("name", name);
args.putInt("position", position);
editFragment.setArguments(args);
fragmentTransaction2 = getFragmentManager().beginTransaction();
fragmentTransaction2.replace(R.id.fragContainer, editFragment);
fragmentTransaction2.addToBackStack(null);
fragmentTransaction2.commit();
}
@Override
public void updateItem(int position, String textUpdated) {
//getting a reference to ListFragment:
MyListFragment myListFragment = (MyListFragment) getFragmentManager().findFragmentByTag("MyListFragment");
ArrayAdapter adapter = (ArrayAdapter) myListFragment.getListView().getAdapter();
}
}