Androidの学習をはじめて16日くらいの人の問題集

Android

株価の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);
        }
    }
}



コメント

タイトルとURLをコピーしました