我有一个ListFragment,其中填充了数据:
String list1 = {...arbitrary data...};
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, list1);
在我的MainActivity中,我有一个changeData(String data, int position)
方法,它将更改ListFragment中某个位置的数据。我如何获得该列表?
我理解,首先我需要获得ListFragment的引用,如下所示:
MyListFragment myListFragment = (MyListFragment) getFragmentManager().findFragmentByTag("MyListFragment");
但下一步是什么?对不起,我是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();
}
}
答案 0 :(得分:0)
您可以在updateItem中更新后调用adapter.notifyDataSetChanged(),因为您已经获得了适配器。而无需创建任何新方法。以下是ArrayAdapter的链接以获取更多信息。