Android:处理网络连接和列表视图

时间:2014-07-04 15:41:10

标签: android listview network-connection

您好我不确定实施此特定方案,我需要一些建议。我有一个listview,我将通过拨打服务器来更新它,如果它是一个很小的数据,它会很快,如果我有5000条记录怎么办?我需要将它们加载到内存或数据库中,然后查询并更新listview吗?这是什么最好的做法?

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

2 个答案:

答案 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”以在需要时从服务器获取更多数据。

Example load more