将BufferedReader中的大型文本显示为viewPager片段(文本读取器类型实现)



我正在尝试制作一个阅读器应用程序,其中的数据是完全静态的。因此,我已将这些数据保存在assets文件夹中的文本文件中。我想使用bufferedReader读取该数据,并将其显示在viewPager中。当用户继续向右滑动时,如果有数据要显示,则页面应与来自bufferedReader的数据一起添加到viewPager

这是我在viewPagerAdapter中的getItem函数。

public Fragment getItem(int i) {
        Fragment pageFragment = new PageFragment();
        StringBuilder sb = new StringBuilder();
        BufferedReader reader = null;
        try {
            InputStream file = context.getAssets().open("chap1.txt");
            reader = new BufferedReader(new InputStreamReader(file));
            // do reading, usually loop until end of file reading
            String mLine = reader.readLine();
            while (mLine != null) {
                //process line
                sb.append(mLine);
                sb.append("n");
                mLine = reader.readLine();
            }
        } catch (IOException e) {
            //log the exception
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    //log the exception
                }
            }
        }
        //Log.e("READ TEXT", sb.toString());
        Bundle bundle = new Bundle();
        bundle.putString("content", sb.toString());
        pageFragment.setArguments(bundle);
        return pageFragment;
    }

我不希望这些页面有滚动视图。

我怎样才能做到这一点
如何限制从bufferedReader读取的文本?或者,我如何拆分文本数据并将其添加到不同的片段中?如果我的问题不清楚,请提问。我无法正确解释。附言:任何其他方法也受到欢迎。

我希望这将有助于

package com.admin.viewpagerex;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class CustomAdapter extends FragmentPagerAdapter {
    int WordsNumber = 100;
    int WordCounter = 0;
    String content ;

    Context context;

    public CustomAdapter(FragmentManager fm, Context context1) {
        super(fm);
        context = context1;
    }
    @Override
    public Fragment getItem(int position) {
            MyFragment  myFragment = new MyFragment();
            loadContent();
            myFragment.setContent(content);
            WordsNumber = WordCounter + 100;
            myFragment.pageNumber = position++;
        return myFragment;
    }

    private void loadContent() {
        try {
            InputStreamReader file = new InputStreamReader(context.getAssets().open("yourtext.txt"));
            Scanner reader = new Scanner(file);
            StringBuffer PageWriter = new StringBuffer();
            int i = 0;
            while (reader.hasNext()&& WordCounter < WordsNumber) {
                String words = reader.next();
                if (i == WordCounter) {
                    PageWriter.append(words + " ");
                    WordCounter++;
                }
                i++;
            }
            content = PageWriter.toString();
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }catch (Exception ex){
        }
    }
    @Override
    public int getCount() {
        return 16; // number of pages 
    }


}

在您的片段中添加setContent()方法,如

public void setContent(String pagetext) {
        content = pagetext; // make sure the content is global String variable
    }

最新更新