0

CSVファイルを読み取って、Androidアプリの基本リストとしてコンテンツを表示させようとしています。私はこのスレッドでKopfgeldjaegerによって与えられた方法を使用しています。

コードがCSVファイルを適切にロードするために管理された(または管理されなかった)場合、Android画面の下部に「成功」​​または「失敗」を表示する「トースト」をいくつか追加しました。下記参照:

  try {
      CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("file.csv")));
      for(;;) {
          next = reader.readNext();
          if(next != null) {
              list.add(next);
          } else {
              break;
          }
      }
      Toast.makeText(getApplicationContext(), "SUCCESS",
              Toast.LENGTH_SHORT).show();
  } catch (IOException e) {
      e.printStackTrace();
      Toast.makeText(getApplicationContext(), "FAIL",
              Toast.LENGTH_SHORT).show();
  }

アプリをロードすると、「SUCCESS」メッセージが表示されるので、これまでのところすべて順調です。ここで、データをロードできるかどうかを確認したいと思います。Kopfgeldjaegerの回答では、次のコードを使用して文字列にアクセスできることが示唆されています。

list.get(1)[1]

それで、それが機能したことを確認するために、私は次のように別のトーストを生成しようとします:

      Toast.makeText(getApplicationContext(), list.get(1)[1],
              Toast.LENGTH_SHORT).show();

この追加されたトーストにより、プログラムが正しくロードされなくなります。問題は、トーストの構文が間違っているのか、それともCSVファイルが正しく読み込まれていないのかということです。

4

1 に答える 1

0

確認することがいくつかあります。

  1. csvファイルのサイズが2x2エントリ以上であることを確認してください。そうでない場合、行インデックス1と列インデックス1からのデータの取得は機能しません。たとえば、印刷またはデバッグlist.size()list.get(0).lengthて、両方が少なくとも2であるかどうかを確認します。
  2. csvファイルが実際にカンマで区切られていることを確認します。たとえば、セミコロンで区切られていないことを確認します。特定のソフトウェアが独自の区切り文字を選択しているように見える場合があります。

推奨事項として:参照されるcsvリーダーはByteCodeのOpenCSVの一部です。そのプロジェクトの最新のソースコードまたはjarを含めることをお勧めします。カスタム区切り文字をサポートし、すべてのcsvデータを文字列配列のリストに解析するための省略形も提供します。

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
List myEntries = reader.readAll();
于 2012-08-26T19:17:35.737 に答える