Android - где сохранить историю и автозаполнение значений - PullRequest
1 голос
/ 12 сентября 2011

мои объекты истории имеют только 2 поля (идентификатор + имя). Я должен спасти их. я использовал sharedpreferences, потому что это просто идеально для сохранения пар ключ-значение. Проблема в том, что нет возможности перейти в место, где сохранены файлы. Я не хочу сохранять их в папке sharedpref, потому что я хочу дать пользователю приложения возможность удалить все записи истории. Я должен проверить, какие файлы являются файлами истории, а какие файлы являются файлами предпочтений, используемых приложением. это не проблема .. но грязный имо. с другой стороны ... мои файлы истории не должны находиться в папке sharedpref .. им нечего делать в этой папке ..

другая возможность - хранить данные во внутреннем хранилище, например, в формате xml. я должен был бы написать сериализатор и парсер.

третья возможность (я только что вспомнил, что писал этот вопрос) - сохранить его через свойства Java. это, наверное, самое простое решение. это как sharedpref

последняя возможность - сохранить его в sqlite. я не знаю .. мои данные такие крошечные ... и я использую данные для их хранения?

мой вопрос прост ... что вы рекомендуете использовать и почему. что ты используешь? Этот же вопрос относится к значениям автозаполнения. Я хотел бы сохранить значения, введенные пользователем в текстовое поле. где их сохранить? где вы сохраняете такие данные?

спасибо заранее

Ответы [ 2 ]

0 голосов
/ 02 июля 2015

Возможно, я неверно истолковываю вашу цель, но для чего-то подобного я бы просто использовал BufferedWriter из java.io.BufferedWriter, чтобы написать новый файл для каждого объекта. Также вы можете читать данные с помощью BufferedReader. Код будет выглядеть примерно так:

 public static void save(FileIO files){
            BufferedWriter out = null;
            try{
                //use a writer to make a file named after the object
                out = new BufferedWriter(new OutputStreamWriter(
                        files.writeFile(objectSomething)));
                //the first line would be ID
                out.write(Integer.toString(objectID));
                //second line would be the name
                out.write(objectName)
                //Theres two possible IOexceptions, 
                //one for using the writer
                //and one for closing the writer
            } catch (IOException e) {
            } finally {try {
                if (out != null)
                    out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            }

В этом примере я использовал "objectSomething" в качестве строки имени файла, objectID и objectName - соответственно int и string, которые содержит ваш файл.

чтобы прочитать эти данные, довольно просто:

public static void load(FileIO files) {
        BufferedReader in = null;
        try {
            // Reads file called ObjectSomething
            in = new BufferedReader(new InputStreamReader(
                    files.readFile(ObjectSomething)));

            // Loads values from the file one line at a time
            varID = Integer.parseInt(in.readLine());
            varName = in.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null)
                    in.close();
            } catch (IOException e) {
            }
        }
    }

здесь я использовал varID и varName в качестве локальных переменных в этом классе, которые вы использовали бы, если бы они были нужны в вашем коде во всем приложении.

0 голосов
/ 12 сентября 2011

Вы можете создать отдельный файл sharedpreferences для вашей истории, используя (скажем) Context.getSharedPreferences("history"), который создаст файл sharedpreferences следующим образом.

/data/data/com.your.package.name/shared_prefs/history.xml

Но я почти уверен, что все файлы с общими настройками будут созданы в /data/data/com.your.package.name/shared_prefs/. Я не думаю, что вы можете изменить местоположение.

...