我有一个文件在单独的行中包含文本。
我想先显示一行,然后如果我按下一个按钮,第二行应该显示在中TextView
,第一行应该消失。然后,如果我再次按下它,应该会显示第三行,依此类推。
我应该使用TextSwitcher
还是其他什么?我怎样才能做到这一点?
我有一个文件在单独的行中包含文本。
我想先显示一行,然后如果我按下一个按钮,第二行应该显示在中TextView
,第一行应该消失。然后,如果我再次按下它,应该会显示第三行,依此类推。
我应该使用TextSwitcher
还是其他什么?我怎样才能做到这一点?
您将其标记为“android-assets”,因此我假设您的文件位于 assets 文件夹中。这里:
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.
}
}
试试这个。我无法验证它是否完全有效,但我相信这是您想要遵循的总体思路。当然,您会希望将 any 替换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();
}
您可以简单地使用 TextView 和 ButtonView。使用 BufferedReader 读取文件,它将为您提供一个很好的 API 来逐行读取。单击按钮时,只需使用 settext 更改 textview 的文本。
您还可以考虑读取所有文件内容并将其放入字符串列表中,如果您的文件不太大,这可能会更干净。
问候, 斯蒂芬