我正在阅读文本文件,在其中读取数据并将其存储到字符串数组对象中的做法。一个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]));
}
}
做到这一点的最佳方法是什么?我试过使用for循环,该循环在第三行停止,并将下一个作为新数据添加。网上有几种方法,但是有些非常复杂,我很难理解。
答案 0 :(得分:0)
问题是您对同时使用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;
}
}
}