2

嗨,我不确定是否要实现这个特定场景,我需要一些建议。我有一个列表视图,我将通过调用服务器来更新它,如果它是少量数据,它会很快,如果我有大约 5000 条记录怎么办?我需要将它们加载到内存或数据库中,然后查询并更新列表视图吗?对此的最佳做法是什么?

假设当我下载数据时突然出现网络中断?那么我将如何处理数据和更新列表视图?

4

2 回答 2

1

我不确定 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/


于 2014-07-04T16:37:07.803 回答
0

如果您有 5000 条记录,您不应该获取所有记录,则必须限制服务器上的查询,以免发送所有记录。

然后,您可以实施“显示更多或无尽”以在需要时从服务器获取更多数据。

示例加载更多

于 2014-07-04T15:53:26.983 回答