我已经实现了一个执行以下操作的ListFragment:
1-将图像文件(页面)加载到列表中<页面>。 (文件来自sdcard app-private目录)
2-创建ListAdapter并传递List<页面>反对它。
3- setListAdapter to ListFragment。
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));
}
}
}
QReadingAdapter实现了一个ListAdapter,它的getView返回了imageView对象。
我的问题是加载所有600页(图片)会导致我的应用关闭:
不幸的是,APP已经停止了。
我尝试过只加载10个页面,应用程序运行没有任何问题。
所以我决定使用AsyncTask(使用largeHeap =&#34; true&#34;)一次加载所有600个iages,我仍然遇到同样的问题。
更新
现在我的ListFragment加载了前10页,当用户向下滚动ListFragment加载下一页时,但当我向下滚动到600页时,由于内存限制,android关闭了应用程序。
我现在要做的是将以下页面加载到ListFragment中:
必须为listFragment上的所有其他项目分配存根图像。
答案 0 :(得分:2)
一种方法是使用适配器,最多可容纳10个项目。并检查onScroll(AbsListView, int, int,int)
onScrollListener
中的最后一个可见项目。然后,当您到达目的地时,请在适配器中加载接下来的10个项目并致电adapter.notifyDataSetChanged()