Java 如何获取对ListFragment';来自MainActivity的适配器和基础数据?

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

我有一个用数据填充的ListFragment:

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();

    }
}