Java 如何在Android中从MainActivity保存ArrayList?
我有一个数组(这里称为arrayMain),我需要在添加项目时保存该数组,并在应用程序启动时加载该数组。我对此进行了彻底的研究,看到了使用gson和SharedPreferences之类的解决方案,但在我的程序中两者都不起作用。我认为这些都不起作用,因为解决方案假设您没有将其放在MainActivity中,而是放在另一个类中 我对编程非常陌生,而且还在学习。正因为如此,请包括我将要做的一切(包括像进口的东西),因为我不知道这一切都很好。因为我不知道我的很多代码是如何交互的,所以我几乎包含了所有代码,这样我就不会遗漏任何内容。谢谢你的帮助 代码:Java 如何在Android中从MainActivity保存ArrayList?,java,android,arraylist,save,Java,Android,Arraylist,Save,我有一个数组(这里称为arrayMain),我需要在添加项目时保存该数组,并在应用程序启动时加载该数组。我对此进行了彻底的研究,看到了使用gson和SharedPreferences之类的解决方案,但在我的程序中两者都不起作用。我认为这些都不起作用,因为解决方案假设您没有将其放在MainActivity中,而是放在另一个类中 我对编程非常陌生,而且还在学习。正因为如此,请包括我将要做的一切(包括像进口的东西),因为我不知道这一切都很好。因为我不知道我的很多代码是如何交互的,所以我几乎包含了所有代
public类MainActivity扩展了AppCompatActivity{
公共静态阵列适配器mItemViewerAdapter;
公共静态ArrayList arrayMain=新ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//获取阵列列表
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
如果(savedInstanceState==null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container,新的占位符片段()).commit();
}
//***返回StringMain的弹出字段(我省略了)***
ArrayMain.add(StringMain);
//集合数组列表
公共静态类占位符片段扩展了片段{
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
斜接导引头=
新阵列适配器(
getActivity(),
R.layout.list\u item\u itemList,
R.id.list\u item\u itemList\u textview,
阿里曼
);
视图根视图=充气机。充气(R.layout.fragment_main,容器,错误);
ListView ListView=(ListView)rootView.findViewById(R.id.ListView\u ItemList);
setAdapter(mItemViewerAdapter);
返回rootView;
}
}
}
首先,您必须理解Json的概念。如何将字符串转换为Json,反之亦然。如何使用Json数组和Json对象。
然后,您会发现在共享首选项中存储json“字符串”数据非常简单。从共享首选项中获取字符串数据,并根据需要将其转换为json数组或对象。
在要在数组列表中加载数据的类中使用此数据。
你必须想一想,这不是直接执行,
您想要存储什么数据,以及如何在类中使用存储的数据。为什么不将您的
arrayMain
保存到数据库中?
public class MainActivity extends AppCompatActivity {
public static ArrayAdapter<String> mItemViewerAdapter;
public static ArrayList<String> arrayMain = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
// Get ArrayList
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceHolderFragment()).commit();
}
// *** POPUP field (that I left out) that returns StringMain ***
ArrayMain.add(StringMain);
// Set ArrayList
public static class PlaceHolderFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mItemViewerAdapter =
new ArrayAdapter<String>(
getActivity(),
R.layout.list_item_itemList,
R.id.list_item_itemList_textview,
arrayMain
);
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.listview_ItemList);
listView.setAdapter(mItemViewerAdapter);
return rootView;
}
}
}