我已将我的应用程序连接到Firebase数据库,并显示我之前保存的图像。可以从数据库中很好地检索它们,并将它们显示在我的应用程序的屏幕上而没有问题。此外,我想在应用程序运行时保存它们。我希望将它们保存在本地而不依赖于我的主要活动生命周期,以便仅在整个应用程序被破坏并重新启动后才从本地存储中重新加载它们。

 imageDownloadList = new ArrayList<>();
    lv = (ListView) findViewById(R.id.listView);

    progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Images are downloading are loading please wait");
    progressDialog.show();

    mDatbaseRef = FirebaseDatabase.getInstance().getReference(Constants.FB_DATABASE_PATH);

    mDatbaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            progressDialog.dismiss();

            for(DataSnapshot snapshot: dataSnapshot.getChildren())
            {
                ImageDownload img = snapshot.getValue(ImageDownload.class);
                imageDownloadList.add(img);
            }

            adapter = new ImageListAdapter(ImageViewActivity.this, R.layout.image_item, imageDownloadList);
            lv.setAdapter(adapter);
        }


这就是我要获取图像的条件。但是如何保存图像数组。这样就是imageDownloadList arrayList。

最佳答案

一种简单的方法是将该图像转换为base64字符串,然后使用SharedPreferences或Sqlite保存它。因此,当您再次打开应用程序时,您可以获取该base64字符串,将其转换为图像并显示它。

10-08 03:14