您好我不确定实施此特定方案,我需要一些建议。我有一个listview,我将通过拨打服务器来更新它,如果它是一个很小的数据,它会很快,如果我有5000条记录怎么办?我需要将它们加载到内存或数据库中,然后查询并更新listview吗?这是什么最好的做法?
假设我在下载数据时突然出现网络丢失?那么我将如何处理数据和更新列表视图?
答案 0 :(得分:1)
我不确定5K记录,但已知ListViews可以很好地处理大量记录 使用有效的回收机制。有关详细说明,请参阅this thread。
现在,帮自己一个忙,并使用Volley来加载网络资源。它做得好得多
将记录异步加载到列表中比我们大多数人...在任何情况下,您使用的库或您自己的代码必须从后台线程执行资源加载/网络。
您还应该将ViewHolder pattern应用于您的代码。使用ViewHolder
总是一个引擎盖的想法。它对于大量的记录变得至关重要。请使用它。
它看起来应该是这样的
class ViewHolder {
textView text1;
Button button1;
}
class MyAdapter {
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView==null){
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
viewHolder = new ViewHolderItem();
viewHolder.text1 = (TextView) convertView.findViewById(R.id.text1);
viewHolder.button1 = (Button) convertView.findViewById(R.id.button1);
..........
convertView.setTag(viewHolder);
}
viewHolder = (ViewHolderItem) convertView.getTag();
ObjectItem objectItem = data[position];
..........
}
}
最后,如果您真的需要部分加载以及加载更多功能,请阅读:
http://www.androidhive.info/2012/03/android-listview-with-load-more-button/
答案 1 :(得分:0)
如果您有5000条记录,则不应该获取所有记录,您必须限制服务器上的查询,这样您就不会发送所有记录。
然后,您可以实现“Show More或EndLess”以在需要时从服务器获取更多数据。