如何保存阵列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保存阵列?相关的知识,希望对你有一定的参考价值。

我有一个基本的应用程序,填充数组并在列表视图中显示它。当我关闭应用程序并重新打开它时,listview为空,你会在哪里保存数组?我看到很多关于共享首选项的帖子,但似乎是在那里存储数组的解决方法,也无法在阵列存储上找到任何android文档?有人能指出我正确的方向吗?

我的代码按要求....

    public class ListView_Activity extends AppCompatActivity {

ArrayList<String>mylistarray = new ArrayList<>();

String tempdescr;
String tempname;
static final int ADD_NEW_ITEM = 1;



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view_);
        /*add the main toolbar and make some changes to format*/
        Toolbar mToolbar = findViewById(R.id.my_toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        mToolbar.setTitle(R.string.toolbartitle);
        mToolbar.setSubtitle(R.string.toolbarsubtitle);
        mToolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite));
        mToolbar.setSubtitleTextColor(getResources().getColor(R.color.colorAccent));



        final ArrayAdapter<String> myadapter = new ArrayAdapter<String>(ListView_Activity.this, R.layout.simple_list_item_1, R.id.row_item_text_view, mylistarray);

        /*create array adapter and set to listview*/

        final ListView mylistview = findViewById(R.id.mylistview);
        mylistview.setAdapter(myadapter);
        mylistarray.add("Test");
        myadapter.notifyDataSetChanged();

        final FloatingActionButton additembutton = findViewById(R.id.floatingActionButton);
        additembutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent additem = new Intent(ListView_Activity.this, Create_Item_Activity.class);
                startActivityForResult(additem, 1);
            }
        });




    }

    /*load options menu to toolbar*/
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_toolbar, menu);
        return true;
    }

    /*handle options menu click events*/
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.settings:
                //intent here to load settings activity//
                return true;
            case R.id.Feedback:
                Intent Feedbackemail = new Intent(Intent.ACTION_SEND);
                Feedbackemail.setType("text/email");
                Feedbackemail.putExtra(Intent.EXTRA_EMAIL, new String[]{"adam.e.garnham@gmail.com"});
                Feedbackemail.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
                Feedbackemail.putExtra(Intent.EXTRA_TEXT,"Dear..."+"");
                startActivity(Intent.createChooser(Feedbackemail,"Send Feedback"));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if (requestCode == ADD_NEW_ITEM){
            if (resultCode == Activity.RESULT_OK) {
                tempdescr = data.getStringExtra("tempdescr");
                tempname = data.getStringExtra("tempname");
                mylistarray.add(tempdescr);
                mylistarray.add(tempname);



            }
            if (resultCode == Activity.RESULT_CANCELED) {
                Toast replacewithcode = Toast.makeText(ListView_Activity.this, "replace with code", Toast.LENGTH_SHORT);
                replacewithcode.show();
            }
        }
    }




}
答案

您可以使用几个选项来存储阵列。

选项1。

共享偏好,快速且非常简单易懂。只要你的阵列不大,这可能是最好的选择。以下是共享偏好指南的链接。

https://developer.android.com/training/data-storage/shared-preferences.html

有了这个,您可能希望使用类似GSON的东西将数组转换为字符串然后存储字符串。

选项2。

存储在本地sqlite数据库中,这有点复杂,但可以为您的数组保存大量数据。这是android sqlite指南的链接。

https://developer.android.com/training/data-storage/sqlite.html

选项3。

使用数据库/服务器,这将花费最长的时间进行设置,但允许应用程序获取数据。此选项需要与数据库建立Internet连接。

我建议你去设置一个mysqlite数据库,如果你认为你可以处理它,但如果你是初学者我会倾向于将数组存储在共享首选项中,因为设置的代码要少得多。

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

如何优化C ++代码的以下片段 - 卷中的零交叉

javascript 用于生成FP阵列单行的片段

如何在 Matlab 中将线阵列保存为图形

我将如何清除整个阵列?

将阵列保存到设备

保存 3D 蒙版阵列