株価のCSVデータをパースしてリストビューで表示してみよう。
Q1
下のリンクからCSVデータをダウンロードし、コード,銘柄名,始値,終値をリストビューに表示せよ。
下からダウンロード
1 ファイル 303.12 KB
[実行例]
●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); } } }
コメント