【问题标题】:Android: Handling network connectivity and listviewAndroid:处理网络连接和列表视图
【发布时间】:2014-08-25 23:43:44
【问题描述】:

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

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

【问题讨论】:

    标签: android listview network-connection


    【解决方案1】:

    如果你有 5000 条记录,你不应该获取所有记录,你必须限制服务器上的查询,这样你就不会发送所有记录。

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

    Example load more

    【讨论】:

    • 所以首先我应该将它们加载到我的数据库然后更新列表视图?
    • 假设如果我用 20 条记录更新了我的列表视图,并且如果网络突然下降,我应该如何处理这种情况?
    • 如果我不想使用任何加载更多按钮或分页怎么办,我应该怎么做。
    • 当您激活“显示更多”时,检查是否有互联网。如果没有互联网连接不问她到服务器。如果有互联网连接,请询问服务器。
    • 我认为如果你应该在一个场景中实现分页,如果你有很多记录你的应用程序会很慢。
    【解决方案2】:

    我不确定是否有 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];
             ..........
        }
    }
    


    最后,如果您确实需要部分加载以及 Load more 功能,请阅读: http://www.androidhive.info/2012/03/android-listview-with-load-more-button/


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多