アンドロドアプリ開発初心者で、今回はassets内にcsvファイルをおきその中身を呼び出すというプログラムを作成したのですが、アプリを実行してみると画面に何も表示されません.assetsはappフォルダの下に作りました。
MainActivity
package com.example.p7;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CsvReader parser = new CsvReader(); parser.reader(getApplicationContext()); ListViewAdapter listViewAdapter = new ListViewAdapter(this, 0, parser.objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(listViewAdapter); }
}
CsvReader
package com.example.p7;
import android.content.Context;
import android.content.res.AssetManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class CsvReader {
List<ListData> objects = new ArrayList<ListData>();
public void reader(Context context) {
AssetManager assetManager = context.getResources().getAssets();
try {
// CSVファイルの読み込み
InputStream inputStream = assetManager.open("data.csv");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferReader.readLine()) != null) {
//カンマ区切りで1つづつ配列に入れる ListData data = new ListData(); String[] RowData = line.split(","); //CSVの左([0]番目)から順番にセット data.setId(RowData[0]); data.setName(RowData[1]); data.setYomi(RowData[2]); data.setKentyo(RowData[3]); data.setYomi_kentyo(RowData[4]); objects.add(data); } bufferReader.close(); } catch (IOException e) { e.printStackTrace(); } }
}
ListViewAdapter
ackage com.example.p7;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import androidx.annotation.NonNull;
import java.util.List;
public class ListViewAdapter extends ArrayAdapter<ListData> {
private LayoutInflater layoutInflater;
public ListViewAdapter(Context context, int resource, List<ListData> objects) { super(context, resource, objects); layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { ListData data = (ListData)getItem(position); if (null == convertView) { convertView = layoutInflater.inflate(R.layout.list_item, null); } TextView idText; TextView nameText; TextView yomiText; TextView kentyoText; TextView yomi_kentyoText; idText = (TextView)convertView.findViewById(R.id.id); nameText = (TextView)convertView.findViewById(R.id.name); yomiText = (TextView)convertView.findViewById(R.id.yomi); kentyoText = (TextView)convertView.findViewById(R.id.kentyo); yomi_kentyoText = (TextView)convertView.findViewById(R.id.yomi_kentyo); idText.setText(data.getId()); nameText.setText(data.getName()); yomiText.setText(data.getYomi()); kentyoText.setText(data.getKentyo()); yomi_kentyoText.setText(data.getYomi_kentyo()); return convertView; }
}
ListData
package com.example.p7;
public class ListData {
String id;
String name;
String yomi;
String kentyo;
String yomi_kentyo;
public void setId(String id){ this.id = id; } public String getId(){ return id; } public void setName (String name){ this.name = name; } public String getName(){ return name; } public void setYomi(String yomi){ this.yomi = yomi; } public String getYomi(){ return yomi; } public void setKentyo(String kentyo){ this.kentyo = kentyo; } public String getKentyo(){ return kentyo; } public void setYomi_kentyo(String yomi_kentyo){ this.yomi_kentyo = yomi_kentyo; } public String getYomi_kentyo(){ return yomi_kentyo; }
}
list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
</LinearLayout> activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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" tools:context=".MainActivity"><TextView android:id="@+id/id" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/yomi" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/kentyo" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/yomi_kentyo" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
あなたの回答
tips
プレビュー