【问题标题】:Limiting fetching data from database as user loads (Pagination)限制在用户加载时从数据库中获取数据(分页)
【发布时间】:2015-12-13 03:57:14
【问题描述】:

我正在开发一个从 MySQL 数据库中获取数据的小型应用程序。假设如果数据库中有大约 100 个条目,并且我只想获取前 10 个条目,并且只有当用户单击加载或显示更多时,接下来的 10 个条目必须加载到同一个列表视图中。 我正在使用 json 解析器来解析获取的数据,并且将使用 php 从表中的所有数据创建 json 对象。我可以将 json 解析器的 for 循环限制为仅解析前 10 个对象,但我不知道如何完成上述功能。

使用的json解析器是。

private void parseJsonFeed(JSONObject response) {
        try {
            JSONArray feedArray = response.getJSONArray("feed");

            for (int i = 0; i < feedArray.length(); i++) {
                JSONObject feedObj = (JSONObject) feedArray.get(i);

                FeedItem item = new FeedItem();
                item.setId(feedObj.getInt("id"));
                item.setName(feedObj.getString("name"));

                // Image might be null sometimes
                String image = feedObj.isNull("image") ? null : feedObj
                        .getString("image");
                item.setImge(image);
                item.setStatus(feedObj.getString("status"));
                item.setProfilePic(feedObj.getString("profilePic"));
                item.setTimeStamp(feedObj.getString("timeStamp"));

                // url might be null sometimes
                String feedUrl = feedObj.isNull("url") ? null : feedObj
                        .getString("url");
                item.setUrl(feedUrl);

                feedItems.add(item);
            }

            // notify data changes to list adapater
            listAdapter.notifyDataSetChanged();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

xml 布局只是一个简单的列表视图,它被自定义适配器膨胀。 我应该在哪里放置加载更多按钮,使其成为第 11 项,或者该按钮应显示在前 10 个列表项之后。

谢谢。

【问题讨论】:

    标签: php android mysql json listview


    【解决方案1】:

    你应该试试这个,在服务器端:http://www.w3schools.com/php/php_mysql_select_limit.asp

    $sql = "SELECT * FROM YOUR_TABLE LIMIT a,b";
    

    “a”是偏移量,“b”是极限

    【讨论】:

    • 我在写这个问题时是个新手,我什至不知道我在寻找分页(哈哈),我只知道这种行为。你的解决方案帮助了我。总而言之,我在客户端所做的事情是正确的,数据限制(分页)必须在后端进行,同时获取数据。我们还可以在前端维护一个 PAGE_NUMBER 变量并不断递增并发送它来计算 OFFSET,LIMIT 可以根据要求始终为 20/40。在前端(Android/iOS)上继续将数据附加到同一个数组中
    【解决方案2】:

    这不应该在客户端(android/iOS)端完成。这应该在后端完成,您必须在 mySQL 查询中设置获取记录的限制,如下所示,

    $sql = "SELECT * FROM YOUR_TABLE LIMIT 10";
    

    上面的查询只会返回十条记录。

    【讨论】:

    • 如果我限制我的获取,但会随机传递而不发送相同的数据怎么办?我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2011-11-13
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2015-11-12
    • 2017-10-24
    相关资源
    最近更新 更多