Android

【Android】CSV読み込みの実装

説明

AndroidアプリでCSVの読み込みを実装します。
サンプルは英単語、意味を表示するアプリです。

実装説明

assetsファイルに読み込みを行いたいCSVを置きます。
続いてプログラムの説明です。
・assetsからCSVファイルの読み込みを行います。

InputStream inputStream = getResources().getAssets().open("csvファイルパス");

・以下は1行ずつ読み込みを行うための変換を行っています。

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferReader = new BufferedReader(inputStreamReader);

・1行ずつデータを読み込みます。

bufferReader.readLine()

・CSVがカンマ区切りなので、文字列をStringTokenizerでカンマ区切りにします。

 StringTokenizer stringTokenizer = new StringTokenizer(取得した文字列, ",");
サンプル

english.csv

business,ビジネス、事業
company,会社、同行する、仲間
office,会社、事務所、役所
want,欲しい、望む
store,店、蓄え、蓄える

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ListView
        android:id="@+id/list_view1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">

    <ListView
        android:id="@+id/list_view2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">
    </ListView>
</LinearLayout>

list_item_layout.csv

・リストのセルレイアウトです。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginLeft="10dp"
    android:gravity="center"
    android:orientation="vertical"
    android:text="TEXT"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@android:color/black"></TextView>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private ArrayList wordList;
    private ArrayList meaningList;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wordList = new ArrayList<>();
        meaningList = new ArrayList<>();

        readCSV();

        ListView listView = (ListView) findViewById(R.id.list_view1);
        ListView listView2 = (ListView) findViewById(R.id.list_view2);

        ArrayAdapter arrayAdapter =
                new ArrayAdapter(
                        this, R.layout.list_item_layout , wordList);
        ArrayAdapter arrayAdapter2 =
                new ArrayAdapter(
                        this, R.layout.list_item_layout , meaningList);

        listView.setAdapter(arrayAdapter);
        listView2.setAdapter(arrayAdapter2);
    }

    /**
     * CSVの読み込み
     */
    public void readCSV() {
        try {
            InputStream inputStream =
                    getResources().getAssets().open("english.csv");

            InputStreamReader inputStreamReader =
                    new InputStreamReader(inputStream);

            BufferedReader bufferReader =
                    new BufferedReader(inputStreamReader);

            String line = "";

            while ((line = bufferReader.readLine()) != null) {
                StringTokenizer stringTokenizer =
                        new StringTokenizer(line, ",");

                wordList.add(stringTokenizer.nextToken());
                meaningList.add(stringTokenizer.nextToken());
            }
            bufferReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

・スクリーンショット

これで英単語アプリでも簡単に作れますね。
以上です。

1 Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です