我在android studio中有20行文本的textview 我想在文本视图中首先显示0-10行 并设置按钮单击首先隐藏10行并在textview中显示第二行10。 这项工作对我来说,但我想在显示第二个10行之后隐藏前10行。
你能帮帮我吗? 我的代码 btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
InputStream is = getAssets().open("1.xml");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String text = new String(buffer);
tv1.setText(text);
} catch (IOException e) {
e.printStackTrace();
tv1.setText("");
}
tv1.setLines(10);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = i + 10;
tv1.setLines(i);
}
});
答案 0 :(得分:0)
一个简单的解决方案是将所需的所有文本添加到ArrayList中,并且最初将前十行加载到StringBuilder中,并将TextView的值设置为StringBuilder。单击按钮时,将另外10行从ArrayList添加到StringBuilder,并再次将TextView的值设置为StringBuilder。您将要在TextView上启用滚动功能,因为它会快速耗尽垂直空间以显示10行。
答案 1 :(得分:0)
你可以尝试这个 - 需要添加一些类变量。在读取后初始化lineindex保持设置!您只需要使用readNextLines()
的参数onClick
来调用Button
方法。但首先是init()
,最后是close()
。
private BufferedReader br;
private FileInputStream fin;
private final String filePath = "...";
private boolean initFile() {
boolean isCreated = false;
try {
fin = new FileInputStream(filePath);
br = new BufferedReader(new InputStreamReader(fin));
isCreated = true;
} catch (FileNotFoundException e) {
System.out.println("Your Message");
} catch (IOException e) {
System.out.println("Your Message");
}
return isCreated;
}
// Don´t forget null check! It´s short version
// pointer keeping it´s position and reading next X lines.
private String readNextLines(int lineCount) {
int count = 0;
StringBuilder sb = new StringBuilder();
while( count < lineCount && this.br.hasNext()) {
sb.append(br.readLine() + "\n");
count++;
}
return sb.build().toString();
}
private void closeFile() {
this.br.close();
this.fin.close();
}