android - Android Studio 保留一个带有片段的数组列表?
问题描述
我正在开发一个应用程序,它将使用片段和列表视图向用户显示项目列表。目前,在我的 AlarmFragment1() 中,我声明了一个私有 ArrayList。
private ArrayList<Alarms> alarms = new ArrayList<Alarms>
我使用此列表在 OnCreate 中使用我创建的 AlarmAdapter 填充 ListView。但是,我希望能够在其他片段中编辑此警报列表,例如删除项目。
在我的 AlarmFragment() 中,我有一个项目侦听器,用于打开一个新片段,用户可以在其中选择删除他们单击的项目。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Bundle bundle = new Bundle();
bundle.putInt("item_index", i);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
DeleteAlarm fragment = new DeleteAlarm();
fragment.setArguments(bundle);
transaction.add(R.id.main_frame, fragment);
transaction.commit();
在我的 EditFragment 内部,我有一个删除项目按钮侦听器。
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Attempt at deleting item
AlarmFragment alarm = new AlarmFragment();
alarm.deleteAlarm(myInt); //<--myInt from bundle
fListener = (OnFragmentInteractionListener) getActivity();
fListener.changeFragment(3, "alarm");
}
});
我尝试在 AlarmFragment() 中创建一个可以为我编辑列表的公共方法,例如:
public void remove(int i){ alarms.remove(i); }
这不仅不起作用,而且我还必须想办法重新显示我最初在 OnCreateView() 中创建的 listView。我已经绕了很长一段时间没有成功。我也尝试添加一个新的警报,但即使这样也没有用。有什么方法我可以做到这一点或存储数组列表的不同方式,因为当应用程序关闭时列表将被重置。
解决方案
您的问题的很大一部分是您正在函数中创建一个新AlarmFragment
的onClick
。您应该使用仍在堆栈中的那个。至于您的设计,您应该让 Activity 保存警报数组,而不是片段。您可以让 Activity 在数组数据发生更改时通知其所有 Fragment,通过侦听器或直接调用函数。
推荐阅读
- java - webview Facebook 已弃用 Android
- binary-tree - 如果在 O(1) 中给出节点总数,则在完全二叉树的左右子树中查找节点数
- facebook - 为什么新业务规则不允许在 Facebook 上推广我的应用
- flutter - 参数类型“num”不能分配给参数类型“double?”。SliverAppBar
- python - PANDAS:数据框中的数学除法在由 7 个空格分隔的行之间
- react-native - 滑动到下一个屏幕(无限)
- php - 如何在 php 中的 html 标记内回显?
- android - 中心操作栏标题 - Android
- python - 限制生成的圆圈数量
- amazon-web-services - 与 tls 1.2 握手后 aws s3 cpp sdk finning 与 minio 的连接