【问题标题】:Android listview scroll add more json data?Android listview滚动添加更多json数据?
【发布时间】:2014-04-23 17:02:57
【问题描述】:

我有一个自定义列表视图,通过 json 检索国家数据 我必须在 android 中显示大约 100 个数据

如果我直接将它显示给 android 加载时间太长, 所以现在我想在我的应用程序中实现更多的滚动加载,所以我只需要首先加载 10 个数据,当向下滚动时它会再加载 10 个

问题是如何让它工作..我在这个网站和其他网站上找到了很多方法来做到这一点,比如使用onscrolllistener,但我必须将我的 php 更改为分页,我不想要它(也许我的最后一个选择),我找到的其他方法是endless adapter,我不知道我必须更改我的 php 代码还是不使用无限适配器,因为我不知道如何实现它,我找不到任何一起使用 json 和无限适配器的简单示例

那么有什么方法可以在不更改代码的情况下实现滚动以加载更多内容

这是我的代码

public class CustomizedListView extends Activity {

static final String URL = "my URL";
static final String URL_TITLE = "world";
static final String URL_ID = "rank";
static final String URL_COUNTRY = "country";
static final String URL_THUMB = "flag";
JSONArray contacts = null;
ListView list;
LazyAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ArrayList<HashMap<String, String>> countryList = new ArrayList<HashMap<String, String>>();
    ServiceHandler sh = new ServiceHandler();
    String jsonStr = sh.makeServiceCall(URL, ServiceHandler.GET);

    if (jsonStr != null) {
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);
            contacts = jsonObj.getJSONArray(URL_TITLE);

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

                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject c = contacts.getJSONObject(i);
                String id = c.getString(URL_ID);
                String country = c.getString(URL_COUNTRY);
                String thumb = c.getString(URL_THUMB);

                map.put(URL_ID, id);
                map.put(URL_COUNTRY, country);
                map.put(URL_THUMB, thumb);

                countryList.add(map);
            }
        } catch (JSONException e1) {

            e1.printStackTrace();
        }
    }

    list=(ListView)findViewById(R.id.list);

    adapter=new LazyAdapter(this, countryList);        
    list.setAdapter(adapter);   
}   
}

我已经搜索了 2 天,但没有找到任何可以使用此代码的示例

请帮助我如何使我的代码在滚动时可以加载更多,如果可以请给我一个简单的例子

谢谢

【问题讨论】:

  • 但是您必须将 PHP 更改为分页。您将如何分阶段获取数据?这不像数据库读取数据时从服务器到客户端的数据连续流动一样。 PHP 将构建整个响应,然后才将其发送回客户端。在这种情况下,分页是必须的。
  • 将 100 个项目从 json 直接加载到 ListView 不会花费太长时间,如果您从 Web 服务中检索 json,我认为这需要很长时间。
  • @velis 嗨,谢谢,但我想我发现了一些使用无限适配器的代码 sn-p 并且不需要更改 php(我不知道代码是否有效,因为我不知道不知道怎么实现)
  • @ConstantinCerberus 我不知道,但是当我运行它时,我的所有数据显示需要很长时间,如果我先加载 10 个数据,然后在滚动后加载另一个数据,我认为最好看看而不是直接全部 100 个数据
  • @Dirus 将一些日志放入代码中,以在 logCat 中查看从服务器和日志接收数据到创建带有项目的列表视图需要多长时间,之后您将知道需要多长时间,您也可以阅读这东西developers.google.com/events/io/sessions/325304728

标签: android json listview commonsware-cwac onscrolllistener


【解决方案1】:

您需要使用加载更多列表视图的概念来完成您所说的事情。

这里有一个example。您将在互联网上获得许多在Android 中使用加载更多列表视图的示例。

您可以询问您是否有任何进一步的疑问。祝您编码愉快:)

【讨论】:

  • 谢谢,我已经研究过了,我不知道如何用 json 实现它。如果它适合 json,我必须更改我的 php .. 你有使用 json 和滚动时可以加载更多数据吗?谢谢
  • @Dirus:看看这个wptrafficanalyzer.in/blog/…
  • 嗨,该代码是关于 json 不滚动加载更多.. 如果您误解了我的最后一条评论,我的意思是使用 json 并且可以滚动加载更多数据的示例
  • 只需使用我的答案中给出的链接中的逻辑,并尝试显示 json 数据。这是你自己尝试的伙伴
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多