如何将ArrayList或HashMap存储到文件或SharedPreferences中?

阿西姆商人

我已经搜索过,但无法为我的问题找到合适的解决方案。我正在从服务器接收数据并显示它,我希望将此数据存储在本地,最好是存储在SharedPreferences文件中。如果可以访问Internet,则应该存储和更新数据。如果没有Internet访问,则应显示此数据。

下面是我的代码

package com.timetable;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.net.ParseException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MondayTimeTable_TE_Elex extends ListActivity {
    // JSON Node names
    private static String TAG_ID = "id";
    private static String TAG_NAME = "name";
    String FILENAME = "monday_te_elex_file";
    FileInputStream fis;

    ListView listViewItem;
    // contacts JSONArray
    JSONArray monday_te_elex = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_monday_time_table_te_elex);

        new PlaceOrder().execute();
        listViewItem = getListView();

    }

    ArrayList<HashMap<String, String>> categoriesList;

    class PlaceOrder extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {

            // TODO Auto-generated method stub
            InputStream inputStream = null;
            String result = null;

            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            // Example for param :
            // nameValuePairs.add(new BasicNameValuePair("id", 1));
            inputStream = Request.setHttpRequest(
                    "http://asimmerchant.hostoi.com/TE/Elex/Monday/monday_te_elex.php",
                    nameValuePairs);

            // Hashmap for ListView
            categoriesList = new ArrayList<HashMap<String, String>>();

            if (inputStream != null) {
                result = StringResponse.convertResponseToString(inputStream);
                result = result.trim();
            }

            if (result == null || result.equals("null")) {
                System.out.println("Invalid request");

            } else {

                try {
                    JSONArray jArray = new JSONArray(result);
                    JSONObject json_data = null;
                    for (int i = 0; i < jArray.length(); i++) {
                        json_data = jArray.getJSONObject(i);

                        try {
                            String id = json_data.getString(TAG_ID);
                            String name = json_data.getString(TAG_NAME);

                            // creating new HashMap
                            HashMap<String, String> map = new HashMap<String, String>();

                            // adding each child node to HashMap key => value
                            map.put(TAG_ID, id);
                            map.put(TAG_NAME, name);

                            categoriesList.add(map);

                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                    }
                } catch (JSONException e1) {
                    Toast.makeText(getBaseContext(), "ERROR", Toast.LENGTH_LONG)
                            .show();
                } catch (ParseException e1) {
                    Toast.makeText(getBaseContext(), "Error", Toast.LENGTH_LONG)
                            .show();
                }

            }
            return null;

        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            /**
             * Updating parsed JSON data into ListView
             * */
            ListAdapter adapter = new SimpleAdapter(MondayTimeTable_TE_Elex.this,
                    categoriesList, R.layout.list, new String[] { TAG_NAME},
                    new int[] { R.id.name });

            setListAdapter(adapter);

            /**
             * Selecting single ListView item
             */
        }
    }
}
黑带

SharedPreferences不能仅存储原始类型,因此您不能使用它来存储Collection您可以使用序列化将其写入内部存储中,但可能会有些棘手。我建议您将JSONObject/ JSONArray(结果取决于您的情况)存储在SharedPreferencesas中String

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将ArrayList存储在文件中?

将ArrayList <CustomClass>存储到SharedPreferences中

如何将arrayList存储到Java中的数组中?

如何将键值对存储在SharedPreferences中?

如何将 Url 从 Firebase Storage 存储到 ArrayList 中?

如何在SharedPreferences中存储ArrayList <HashMap <String,String >>?

如何将所有 ArrayList<ArrayList<String>> 值存储到 ArrayList<String> 中?

如何将程序的输出存储到文件中?

GoWorkers如何将日志存储到文件中

如何将Class的实例存储到文件中

如何将文件信息存储到数组中?

如何将 TcpStream 存储在 HashMap 中?

如何将文件存储到MeteorApp?

如何将文件从内存存储到Laravel5中的存储中?

如何将存储在json文件中的td类存储到html表中(使用Ajax)

Android:将ArrayList <T>存储在SharedPreferences中?

如何将EditText输入存储到现有ArrayList中

如何将 List 或 ArrayList 存储/复制到 HashTable ?在 C# 中

如何将 Node.js 的 readStream 文件存储到 Redis 中,以及如何从 Redis 中检索存储的 readStream 文件?

如何将变量存储在文件中?

如何将放置在蔚蓝文件存储中的.csv文件的内容复制到powershell变量?

如何将CSV文件中的数据存储和排序到字典VBA中

如何将.csv文件中的列存储到列表中?

如何将信息从文件存储到C中的内存中

如何将结果存储到python中的csv文件中

如何将文件的值存储到Solarium中的变量中?

如何将混合类型文件中的整数存储到数组中?爪哇

我如何将数组的内容存储到Powershell中的json文件中

如何将输入文件中的输入逐行存储到变量中