在textview中显示10行后的10行

时间:2017-10-24 13:09:48

标签: android textview

我在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);
            }
        });

2 个答案:

答案 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();
}

也许添加一些安全性和空检查。也许它需要一些工作 - 这是一个快速的解决方案(我没有时间,sry)