如何从 Android 的 MainActivity 中保存 ArrayList?

Posted

技术标签:

【中文标题】如何从 Android 的 MainActivity 中保存 ArrayList?【英文标题】:How do you save an ArrayList from MainActivity in Android? 【发布时间】:2016-07-21 02:37:39 【问题描述】:

我有一个数组(此处称为 arrayMain),在添加项目时需要保存它,并在应用程序启动时加载它。我已经对此进行了彻底的研究,看到了使用 gson 和 SharedPreferences 之类的解决方案,但在我的程序中都不起作用。我相信这些不起作用,因为解决方案假设您没有将它放在 MainActivity 中,而是放在不同的类中。

我对编程很陌生,并且还在学习。因此,请包括我必须做的所有事情(包括导入东西之类的事情),因为我不太了解这一切。因为我不知道我的很多代码是如何交互的,所以我几乎包含了所有代码,这样我就不会遗漏任何东西。感谢您的帮助。

代码:

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;

    




【问题讨论】:

为什么不将您的arrayMain 保存在数据库中? 【参考方案1】:

首先,您必须了解 Json 的概念。如何将字符串转换为 json,反之亦然。如何使用 json 数组和 json 对象。 然后,您会发现将 json“字符串”数据存储在共享首选项中的方法非常简单。从共享首选项中获取字符串数据,并根据您的需要将其转换为 json 数组或对象。 在要在数组列表中加载数据的类中使用此数据。 这不是直接执行,你必须思考, 您想存储什么数据以及如何在班级中使用存储的数据。

【讨论】:

以上是关于如何从 Android 的 MainActivity 中保存 ArrayList?的主要内容,如果未能解决你的问题,请参考以下文章

无法从JNI GetMethodId函数中获取值[关闭]

Android对话框

如何从alertdialog更改mainactivity中的可见性edittext

当我单击警报对话框中列出的项目时,Android Toast 没有出现

如何使用 MediaProjection API 从后台服务类中截取屏幕截图?

java.lang.IllegalArgumentException:尝试删除从未添加的 OnFrameMetricsAvailableListener