我有大量的数据。
我希望在List中显示,此数据包含图像,网址,标题,类型和价格。
项目列表可以超过10,000
。
因此,如果我要实现Lazy Loading
,我需要所有网址和其他数据,以便我可以在运行时加载图像。
但是如何加载包含网址,标题,类型和价目表的数据?
或者我可以通过延迟加载首先加载20条记录。如果是,那么如何?
请建议您是否有更好的方法来完成这项工作。
提前致谢。
答案 0 :(得分:1)
您可以首先加载20条记录,在滚动ListView时可以使用ScrollListener
为ListView
加载更多记录。 check this answer
答案 1 :(得分:1)
我是如何做到这一点的是我使用AsyncTask在ArrayList中加载数据(假设为20项)然后我使用setAdapter将它们设置为listview,并在ListAdapter的getView方法中将它们设置为第二个最后一项i 再次执行AsyncTask,但这次使用的不是setAdapter,我使用的是adapter.notifyDataSetChanged(); 应该是这样的: getView方法应该是这样的:
public View getView(int arg0, View arg1, ViewGroup arg2)
{
//your data inflater or set text...
if(arg0==yourList.size()-1)
{
new YourAsyncTask().execute());
}
}
AsyncTask应该是这样的
//first initialize your list out of asynctask
ArrayList<String> yourList=new ArrayList<String>();
class YourAsyncTask extends AsyncTask(Void,Void,Void)
{
protected Void doInBackground(String ... arg0) {
// TODO Auto-generated method stub
//get your data and add to arraylist
yourlist.add(data);
}
protected void onPostExecute(Void result) {
if(yourlist.size<20){
listview.setAdapter(yourAdapter);
}
else
{
yourAdapter.notifyDataSetChanged();
}
}
}
答案 2 :(得分:0)
它完全取决于你如何构建app.One方法我会设法向服务器发出一个请求,它将以json格式返回你的urls,titles数据。
{
"dummy_info": "blah blah blah",
"data": [
{
"url": "http://www.google.com",
"title": "Sample",
"type": "Education",
"price": "50$"
},
{
"url": "http://www.google.com",
"title": "Sample",
"type": "Education",
"price": "50$"
}
]
}
获得特定数据后,您可以使用Android SwipeRefreshLayout或Lazy List加载实现来批量获取数据。