【发布时间】: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