Android ListFragment有600页的书
我实现了一个ListFragment,它执行以下操作: 1-将图像文件(页面)加载到列表Android ListFragment有600页的书,android,Android,我实现了一个ListFragment,它执行以下操作: 1-将图像文件(页面)加载到列表。(文件来自SD卡应用程序专用目录) 2-创建一个ListAdapter并将列表对象传递给它 3-将ListAdapter设置为ListFragment public class QReadingFragment extends ListFragment { private Context context; public QReadingFragment() { } @Ov
public class QReadingFragment extends ListFragment {
private Context context;
public QReadingFragment() {
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
context = getActivity();
new QLoadPagesTask().execute(context.getExternalFilesDir(null));
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
}
private class QLoadPagesTask extends AsyncTask<File, String, List<? extends QPage>> {
@Override
protected List<? extends QPage> doInBackground(File... files) {
return QPageContract.preparePages(files[0]);
}
@Override
protected void onPostExecute(List<? extends QPage> pages) {
setListAdapter(new QReadingAdapter(context, pages));
}
}
}
公共类QReadingFragment扩展了ListFragment{
私人语境;
公共QReadingFragment(){
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
context=getActivity();
新建QLoadPagesTask().execute(context.getExternalFilesDir(null));
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
}
私有类QLoadPagesTask扩展了AsyncTask一种方法是使用一个最多可以容纳10个项的适配器,并检查onScroll中最后一个可见项(AbsListView,int,int,int)onScrollListener
的
。然后,当您到达末尾时,在适配器中加载接下来的10项并调用适配器。notifyDataSetChanged()
使用较小的图像,看看有没有更好的方法?我正在考虑按需加载图像,同时加载用户上下滚动页面。(这些图像是书页,我也需要按正确的顺序显示)如果用户向下滚动的速度太快,比如说,他想进入最后一章。好的,当滚动状态为scroll\u state\u FLING时,只显示存根图像而不是原始书页,当它变为scroll\u state\u IDLE时,获取可见项目位置并显示这些位置的真实页面。您可以在onScro中获取滚动状态llStateChanged(AbsListView视图,int-scrollState)进一步里德:,int)