株価のCSVデータをパースしてリストビューで表示してみよう。
Q1
下のリンクからCSVデータをダウンロードし、コード,銘柄名,始値,終値をリストビューに表示せよ。
[実行例]

●MainActivity.java
import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
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 MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv=(ListView)findViewById(R.id.lv);
List<Stock> list=new ArrayList<>();
ArrayAdapter<Stock> adapter=new ArrayAdapter<Stock>(this,android.R.layout.simple_list_item_1,list);
lv.setAdapter(adapter);
AssetManager am=this.getAssets();
BufferedReader br=null;
try {
InputStream is=am.open("stocks_2017-08-16.csv");
InputStreamReader isr=new InputStreamReader(is,"UTF-8");
br=new BufferedReader(isr);
String line;
while((line=br.readLine()) != null){
if(line.startsWith("コード")){
continue;
}
String[] data=line.split(",");
list.add(new Stock(data[0],data[1],data[3],data[6]));
}
} catch (IOException e) {
e.printStackTrace();
} finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
adapter.notifyDataSetChanged();
}
static class Stock{
String code;
String name;
String start;
String end;
public Stock(String code,String name,String start,String end){
this.code=code;
this.name=name;
this.start=start;
this.end=end;
}
@Override
public String toString() {
return String.format("%s %s 始値:%s 終値:%s",code,name,start,end);
}
}
}
コメント