我正在尝试制作一个阅读器应用程序,其中的数据是完全静态的。因此,我已将这些数据保存在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
}