質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

1285閲覧

CSVファイルの中身をtextViewに表示させたい。

nabebe

総合スコア8

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/03/13 00:10

CSVファイルの中身をtextViewに表示させたい。

ここに質問の内容を詳しく書いてください。
質問失礼いたします。
現在Kotlin実践プログラミングという書籍にて、CSVデータを出力するコードを書こうとしています。
ゴールとしては一番下の MainactivityというファイルのtextViewに取得したCsvデータの中身を代入したいのですがどうすればよいでしょうか?

該当のソースコード

csvファイル

id,名前,値段 1,リンゴ,100 2,バナナ,98 3,すいか,200 4,メロン, 5,もも,300

データ読み込みファイルLoader.kt

package com.example.myapplication import java.io.File interface Loader { // テキストを読み込む外部システムによっては、文字列を返さないことも想定できるので nullable とする fun load(): String? } class FileLoader(private val file: File): Loader { init { // 事前条件であるファイルの存在性を要求する require(file.exists()) } override fun load(): String? = file.readText() }

出力ファイルWriter.kt

package com.example.myapplication import java.io.File interface Writer { // 出力するデータは存在しなければならないのでNon-Nullとする fun write(formatter: Formatter) } class StdOutWriter: Writer { override fun write(formatter: Formatter) { println(formatter.format()) } }

フォーマッターファイルFormatter.kt

package com.example.myapplication interface Formatter { val data: String fun format(): String } class TextFormatter( override val data: String ) : Formatter { override fun format(): String = data }

上記のファイルを実行するファイルApp.kt

package com.example.myapplication import java.io.File object App { @JvmStatic fun main(args: Array<String>){ val filePath = "assets/item.csv" val content = FileLoader(File(filePath).also{ if(!it.exists()){ throw IllegalArgumentException("$filePath にファイルがありません") } }).load() ?: throw java.lang.IllegalArgumentException("ファイルの中身がありません") val formatter = TextFormatter(content) val writer = StdOutWriter() writer.write(formatter) } }

値を代入したいファイルMainActivity.kt

package com.example.myapplication class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textView.text = } } } }

試したこと

App.ktの
val formatter = TextFormatter(content)
の中にCSVファイルの中身が入っていると思うので、
object App {}の外で文字列の変数を定義(MainActivity.ktで利用するため)
var csvdata: String = ""
object App {}内にて
csvdata = formatter.toString()
としてcsvデータを取得し
MainActivity.ktでtextView.text = csvdata

このように値を受け渡そうとしたのですが実際は値は出力されませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stdio

2019/03/13 00:36

まず、デバック関数を使いCSVの中身をしっかり取得できているかを確認しましょう。
nabebe

2019/03/13 00:52

stdio様 解答ありがとうございます。 デバック関数というのは https://appcoding.net/log-kotlin/ こちらのサイトで述べられているものでしょうか?
keicha_hrs

2019/03/13 01:59

当該書籍は所有していませんが、書籍を参考にしているのなら具体的なコードまで記されているのではありませんか?その通りにコーディングしたのに意図した結果にならないということなのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問