テキストを別々の行に含むファイルがあります。
私は最初に行を表示したいですし、ボタンを押すと、TextView
に2行目が表示され、最初の行が消えます。次に、もう一度押すと3行目が表示されます。ファイルを行単位で取得する方法
TextSwitcher
または何か他のものを使用する必要がありますか? どうすればいいですか?
テキストを別々の行に含むファイルがあります。
私は最初に行を表示したいですし、ボタンを押すと、TextView
に2行目が表示され、最初の行が消えます。次に、もう一度押すと3行目が表示されます。ファイルを行単位で取得する方法
TextSwitcher
または何か他のものを使用する必要がありますか? どうすればいいですか?
あなたは「アンドロイド-資産」としてタグ付けされたので、私はあなたのファイルは、資産フォルダにあると仮定するつもりです。ここに:
InputStream in;
BufferedReader reader;
String line;
TextView text;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView) findViewById(R.id.textView1);
in = this.getAssets().open(<your file>);
reader = new BufferedReader(new InputStreamReader(in));
line = reader.readLine();
text.setText(line);
Button next = (Button) findViewById(R.id.button1);
next.setOnClickListener(this);
}
public void onClick(View v){
line = reader.readLine();
if (line != null){
text.setText(line);
} else {
//you may want to close the file now since there's nothing more to be done here.
}
}
これを試してください。私はそれが完全に動作することを確認することができませんでしたが、これはあなたが従いたい一般的な考えだと思います。もちろん、R.id.textView1/button1
をレイアウトファイルで指定した名前に置き換えることもできます。
また、スペースのためにここでエラーチェックがほとんど行われていません。あなたの資産が存在することを確認したいと思うでしょうし、私は読んでファイルを開くときにブロックtry/catch
があるはずです。
編集:大きなエラー、それはR.layout
ではないR.id
私は問題を解決するために私の答えを編集しました。
次のコードは、あなたの必要性
try {
// open the file for reading
InputStream instream = new FileInputStream("myfilename.txt");
// if file the available for reading
if (instream != null) {
// prepare the file for reading
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
// read every line of the file into the line-variable, on line at the time
do {
line = buffreader.readLine();
// do something with the line
} while (line != null);
}
} catch (Exception ex) {
// print stack trace.
} finally {
// close the file.
instream.close();
}
あなたは 'openFileInput()'メソッドをどこから入手しますか?また、 "try/finally'ブロックを使用してストリームを閉じてください(例外がスローされたときに閉じられるように)。 –
正しい方法ですが、コンパイルされないCスタイルの条件を使用しています。 null/int/assignment等からbooleanへの自動変換を許可しないので、 'if(instream)'と 'while(line = buffreader.readLine())'を 'if(instream!= null) )とwhile(buffreader.hasNext()) –
BufferedReaderにはhasNext()関数がありません。ヌルであるかどうかを確認してください。 –
あなたは単にのTextViewとButtonViewを使用することができます満たす必要があります。 BufferedReaderを使用してファイルを読み込むと、行を1つずつ読み込むための素晴らしいAPIが提供されます。ボタンをクリックするだけで、settextを使ってテキストビューのテキストを変更できます。
また、すべてのファイルの内容を読み込んで文字列のリストに入れることもできます。ファイルが大きすぎない場合は、これをきれいにすることができます。
よろしく、 ステファン
回答があれば受け入れて、評判を得ることもできます。 – Otra