嗨,我不确定是否要实现这个特定场景,我需要一些建议。我有一个列表视图,我将通过调用服务器来更新它,如果它是少量数据,它会很快,如果我有大约 5000 条记录怎么办?我需要将它们加载到内存或数据库中,然后查询并更新列表视图吗?对此的最佳做法是什么?
假设当我下载数据时突然出现网络中断?那么我将如何处理数据和更新列表视图?
嗨,我不确定是否要实现这个特定场景,我需要一些建议。我有一个列表视图,我将通过调用服务器来更新它,如果它是少量数据,它会很快,如果我有大约 5000 条记录怎么办?我需要将它们加载到内存或数据库中,然后查询并更新列表视图吗?对此的最佳做法是什么?
假设当我下载数据时突然出现网络中断?那么我将如何处理数据和更新列表视图?
我不确定 5K 记录,但众所周知,ListViews 可以使用有效的回收机制很好地处理大量记录。有关详细说明,请参阅此线程。
现在,帮自己一个忙,使用Volley来加载网络资源。与我们大多数人相比,它在将记录异步加载到列表方面做得更好......无论如何,您使用的库或您自己的代码必须从后台线程执行资源加载/网络。
您还应该将ViewHolder 模式应用于您的代码。使用 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/