Android читает текстовый файл и сохраняет в переменную на основе первого слова - PullRequest
0 голосов
/ 12 ноября 2018

Я занимаюсь чтением текстовых файлов, где я читаю и сохраняю данные в объект строкового массива. Данные ArrayList должны содержать фотографию, заголовок, веб-сайт и дату. Текстовый файл выглядит так:

photo:android_pie
title:Android Pie: Everything you need to know about Android 9
website:https://www.androidcentral.com/pie
date:20-08-2018
photo:oppo
title:OPPO Find X display
website:https://www.androidpit.com/oppo-find-x-display-review
date:25-08-2018
photo:android_pie2
title:Android 9 Pie: What Are App Actions & How To Use Them
website:https://www.androidheadlines.com/2018/08/android-9-pie-what-are-app- 
actions-how-to-use-them.html
date:16-09-2018

Я пытаюсь разбить и сохранить их в строковом массиве, который является экземпляром моего класса объектов:

 private List<ItemObjects> itemList;

и это конструктор моего класса объектов:

    public ItemObjects(String photo, String name, String link, String date) {
    this.photo = photo;
    this.name = name;
    this.link = link;
    this.date = date;
}

Я пробовал это, но разделитель ":" не разделяет его так, как я хочу:

                while ((sItems = bufferedReader.readLine()) != null) {
                if (!sItems.equals("")) {
                    String[] tmpItemArr = sItems.split("\\:");

                    listViewItems.add(new ItemObjects(tmpItemArr[0], tmpItemArr[1], tmpItemArr[2], tmpItemArr[3]));
                }
            }

Каков наилучший способ сделать это? Я попытался использовать для цикла, который останавливается на третьей строке и добавляет следующий как новые данные. Есть несколько способов сделать это онлайн, но некоторые из них очень сложны, и у меня возникают проблемы с пониманием.

1 Ответ

0 голосов
/ 12 ноября 2018

Проблема в том, что вы понимаете, как использовать функцию split и BufferReader.Используя функцию readline, вы читаете только одну строку, поэтому ваше разбиение будет разбивать только первую строку, вам нужно прочитать 4 первые строки, а затем добавить элемент.

  int count = 0;
  String[] tmpItemArr = new String[4];
  while ((sItems = bufferedReader.readLine()) != null) {
        if (!sItems.equals("")) {
            tmpItemArr[count] = sItems.split(":")[1];
            count++;
            if (count > 3) {
                listViewItems.add(new ItemObjects(tmpItemArr[0], tmpItemArr[1], tmpItemArr[2], tmpItemArr[3]));
                count = 0;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...