複数の種類のストレージでデータを処理するのは初めてで、これが正しいかどうかわかりません。
だから私は6行と〜20列のCSVファイルを持っています。それを解析してから、データベースに読み込みます。(OpenCSV を使用)
このデータベースができたら、そのハッシュ マップを作成し、SimpleAdapter を使用して ListView に表示します。
上記のリストビューにはかなり複雑なアイテムがあり、それぞれに約20個のテキストビューがあります(「クリックして展開」-yのもの)
もちろん、データベースがすでに作成されているかどうかに応じて、すべてが実行されます。
したがって、データベースが既に存在する場合->データベースのみを読み取り、データベースが存在しない場合はリストマッピングを実行し、CSV->データベース->リストジョブ全体を実行します...
私の問題は、それが本当に遅いということです。6 行だけを実行すると、13.1777 ミリ秒かかります。これは私のテスト CSV ファイルにすぎません。最終的なアプリでは数百行を処理する必要があります。
だから私の質問は簡単
です.これをもっと速くすることはできますか? 私はこれを複雑にしすぎているように感じます。
ここに私のコードの一部があります:
ここでは、ジョブを実行する 2 つの関数を呼び出しています。
public void showEszkoz() throws Exception {
Cursor c = databaseEszkoz.selectRecords();
System.out.println("row count: " + c.getCount());
if (c.getCount() == 0)
{
System.out.println("read csv to database to list");
readCsvIntoDatabase();
readDatabaseToList();
}
else
{
System.out.println("only database read to list");
readDatabaseToList();
}
}
これは、CSV ファイルを読み取る関数です。
public void readCsvIntoDatabase() throws IOException {
InputStream is = getResources().openRawResource(R.raw.eszkoz);
Reader myReader = null;
try {
myReader = new InputStreamReader(is, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
CSVReader reader = new CSVReader(myReader);
reader.readNext();
try {
while ((nextLine = reader.readNext()) != null) {
databaseEszkoz.createRecords(Integer.parseInt(nextLine[0]),
Integer.parseInt(nextLine[1]), nextLine[2],
nextLine[3], nextLine[4], nextLine[5], nextLine[6],
nextLine[7], nextLine[8], nextLine[9], nextLine[10],
nextLine[11], nextLine[12], nextLine[13], nextLine[14],
nextLine[15], nextLine[16], nextLine[17], nextLine[18],
nextLine[19], nextLine[20], nextLine[21], nextLine[22],
nextLine[23], nextLine[24], nextLine[25]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
これは、データベースを読み取り、リストに表示する関数です
public void readDatabaseToList() {
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
Cursor c = databaseEszkoz.selectRecords();
c.moveToFirst();
while (!c.isAfterLast()) {
System.out.println("This is the current row:" + c.getString(0));
map = new HashMap<String, String>();
map.put("_id", c.getString(0));
map.put("ESZKOZ_ID", c.getString(1));
map.put("ESZKOZ_LELTARSZAM", c.getString(2));
map.put("ESZKOZ_EAN", c.getString(3));
map.put("ESZKOZ_LEIRAS", c.getString(4));
map.put("ESZKOZ_TIPUS", c.getString(5));
map.put("ESZKOZ_FOCSOPORT_KOD", c.getString(6));
map.put("ESZKOZ_CSOPORT_KOD", c.getString(7));
map.put("ESZKOZ_ALCSOPORT_KOD", c.getString(8));
map.put("ESZKOZ_LELTARCSOP_KOD", c.getString(9));
map.put("ESZKOZ_ALLELTARCSOP_KOD", c.getString(10));
map.put("ESZKOZ_HR_KOD", c.getString(11));
map.put("ESZKOZ_SZERVEZET_KOD", c.getString(12));
map.put("ESZKOZ_MENNYISEG", c.getString(13));
map.put("ESZKOZ_MENNYISEGI_EGYSEG", c.getString(14));
map.put("ESZKOZ_STATUSZ", c.getString(15));
map.put("ESZKOZ_AKTIVALT_ERTEK", c.getString(16));
map.put("ESZKOZ_NETTO_ERTEK", c.getString(17));
map.put("ESZKOZ_SZAMVITEL_KAT", c.getString(18));
map.put("ESZKOZ_MEGJEGYZES", c.getString(19));
map.put("ESZKOZ_BESZERZES_DATUM", c.getString(20));
map.put("ESZKOZ_GARANCIA_KEZD_VEG", c.getString(21));
map.put("ESZKOZ_GYARI_SZAM", c.getString(22));
map.put("ESZKOZ_LELTAR_MENNYISEG", c.getString(23));
map.put("ESZKOZ_LELTAR_ALLAPOT", c.getString(24));
map.put("ESZKOZ_LELTAR_MEGJEGYZES", c.getString(25));
mylist.add(map);
c.moveToNext();
}
c.close();
mSchedule = new SimpleAdapter(context, mylist, R.layout.row_eszkoz,
new String[] { "_id", "ESZKOZ_ID", "ESZKOZ_LELTARSZAM",
"ESZKOZ_EAN", "ESZKOZ_LEIRAS", "ESZKOZ_TIPUS",
"ESZKOZ_FOCSOPORT_KOD", "ESZKOZ_CSOPORT_KOD",
"ESZKOZ_ALCSOPORT_KOD", "ESZKOZ_LELTARCSOP_KOD",
"ESZKOZ_ALLELTARCSOP_KOD", "ESZKOZ_HR_KOD",
"ESZKOZ_SZERVEZET_KOD", "ESZKOZ_MENNYISEG",
"ESZKOZ_MENNYISEGI_EGYSEG", "ESZKOZ_STATUSZ",
"ESZKOZ_AKTIVALT_ERTEK", "ESZKOZ_NETTO_ERTEK",
"ESZKOZ_SZAMVITEL_KAT", "ESZKOZ_MEGJEGYZES",
"ESZKOZ_BESZERZES_DATUM", "ESZKOZ_GARANCIA_KEZD_VEG",
"ESZKOZ_GYARI_SZAM", "ESZKOZ_LELTAR_MENNYISEG",
"ESZKOZ_LELTAR_ALLAPOT", "ESZKOZ_LELTAR_MEGJEGYZES" },
new int[] { R.id.row_eszkoz_id, R.id.row_eszkoz_eszkoz_id,
R.id.row_eszkoz_leltar_szam, R.id.row_eszkoz_ean,
R.id.row_eszkoz_leiras, R.id.row_eszkoz_tipus,
R.id.row_eszkoz_focsoport_kod,
R.id.row_eszkoz_csoport_kod,
R.id.row_eszkoz_alcsoport_kod,
R.id.row_eszkoz_leltarcsoport_kod,
R.id.row_eszkoz_alleltarcsoport_kod,
R.id.row_eszkoz_hr_kod,
R.id.row_eszkoz_szervezeti_egyseg_kod,
R.id.row_eszkoz_mennyiseg,
R.id.row_eszkoz_mennyisegi_egyseg,
R.id.row_eszkoz_statusz,
R.id.row_eszkoz_aktivalt_ertek,
R.id.row_eszkoz_netto_ertek,
R.id.row_eszkoz_szamviteli_kategoria,
R.id.row_eszkoz_megjegyzes,
R.id.row_eszkoz_beszerzes_datuma,
R.id.row_eszkoz_garancia_kezd_veg,
R.id.row_eszkoz_gyari_szam,
R.id.row_eszkoz_leltarozott_allapot,
R.id.row_eszkoz_leltarozott_mennyiseg,
R.id.row_eszkoz_leltarozott_megjegyzes });
list.setAdapter(mSchedule);
}