説明
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