Android 使用数组适配器创建无限列表

Android Creating an Infinate list using array adapter

美好的一天,

我要实现的目标如下:

创建无限滚动列表我在 GITHUB 上发现了以下内容,我认为 Whosebug 用户强烈推荐它。

https://github.com/shontauro/android-pulltorefresh-and-loadmore

背景是这样的:

我的数据库中有一个 posts 的数据库(超过 2000 个活动 posts)我想在列表视图中显示 20 posts 具有以下字段

PID 名称 标题

然后当用户到达列表末尾时,它应该再加载 20 posts。

我知道我需要以某种方式使用 OnNotifyDataSetChanged();但真的不知道如何实现它。

我找到的所有教程都使用简单的数组适配器并且只能接受单个项目:(

该列表还应该有一个 onclick 侦听器,它将检索 post 并将其设置为新的 activity。

我可以使用 JSON 从我的服务器检索 posts,但是追加已经显示的列表让我很困惑。

 public class DownloadJSON extends AsyncTask<Void, Void, Void> {


    @Override
    protected Void doInBackground(Void... params) {
        // Retrieve JSON Objects from the given URL address
        jsonobject = JSONfunctions.getJSONfromURL("http://www.example.com/posts.php?last_id=");

        try {
            // Locate the array name in JSON
            jsonarray = jsonobject.getJSONArray("posts");

            for (int i = 0; i < jsonarray.length(); i++) {

                jsonobject = jsonarray.getJSONObject(i);
                // Retrive JSON Objects
                pid = jsonobject.getString("pid");
                name =  jsonobject.getString("name");
                title =  jsonobject.getString("title");


            }
        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

}

如果有人能给我指出正确的方向,我真的很喜欢它

谢谢

肯尼

因为您将数据本地存储在数据库中,所以最好使用 CursorAdapter 而不是 ArrayAdapter。 CursorAdapter 不会同时加载 2000 个项目,因此在内存使用方面更好。它还将为您管理大量与加载和更新数据相关的工作。

您必须执行以下操作: - 使用 CursorAdapter 为当前数据创建列表 - 一旦到达加载数据的末尾,请调用服务器 - 更新当前光标。

涉及的代码很多,无法作为答案发布。以下资源应该有助于完成它:

如何使用 CursorAdapter:http://www.vogella.com/tutorials/AndroidSQLite/article.html#sqliteoverview_listviews

在数据库中加载更多数据后如何交换光标: Android SimpleCursorAdapter doesn't update when database changes