将已解析的URL(从JSON)添加到字符串数组
我是新手,虽然我已经通过了常见问题解答,但希望我能正确理解这个问题。将已解析的URL(从JSON)添加到字符串数组
的背景
我已经成功地得到使用Facebook SDK数据和自定义列表视图中显示它们。然而,就像任何初学者一样,我总是放慢速度,列表视图像疯了似的。为了弥补这一点,我开始实施利用SO这个例子延迟加载:https://stackoverflow.com/a/3068012/450534
绊脚石
我这个例子@Fedor已经硬编码的URL的成字符串数组。现在我想用那些从Facebook查询结果(JSON)中获取的字符串数组替换它。
此外,这是一个很好的例子(严格来说,这种情况下)还是有一个更好的例子吗?我花了近2天,试图找出懒惰的加载部分。但是由于缺乏有效的搜索或者我刚刚开始这个事实,我就陷入了困境。
我希望这个问题有道理。感谢您的建议。
干杯....
的链接的图像的样品使用JSON来解析一个Facebook查询返回。
04-23 01:44:28.505: V/PICTURE LINK URL :(3902): https://s-external.ak.fbcdn.net/safe_image.php?d=AQBZ5-jVGrHA2hpU&w=90&h=90&url=http%3A%2F%2Fblog.mozilla.org%2Ftheden%2Fwp-content%2Fthemes%2FTheDen%2Fimg%2Fbg-header.png
@Fedor的一个子集在他的例子中对URL进行了硬编码。
private String[] mStrings={
"http://a1.twimg.com/profile_images/349012784/android_logo_small_normal.jpg",
"http://a1.twimg.com/profile_images/841338368/ea-twitter-icon.png",
"http://a3.twimg.com/profile_images/64827025/android-wallpaper6_2560x160_normal.png",
"http://a3.twimg.com/profile_images/77641093/AndroidPlanet_normal.png",
"http://a1.twimg.com/profile_images/850960042/elandroidelibre-logo_300x300_normal.jpg",
"http://a1.twimg.com/profile_images/655119538/andbook.png",
"http://a3.twimg.com/profile_images/768060227/ap4u_normal.jpg",
"http://a1.twimg.com/profile_images/74724754/android_logo_normal.png",
"http://a3.twimg.com/profile_images/681537837/SmallAvatarx150_normal.png"
};
编辑
的新的编辑将要承担很大的空间。因此,我链接它pastebin:http://pastebin.com/HZfCTMy6
facebook API有一个错误,如果在新闻Feed上有一个共享的帖子,它不会给一个“图片”标记和另一个查询必须作出图片网址使用“object_id”标签。在引擎收录的代码,这是摆在if + else if
代码块的起始行号
这真是一个漫长的一段代码,我感谢你可能需要通过它去的时间。
任何帮助,这将是真的,真的很感激。两天以上,看不到解决方案。 :-(
如果你有一个这样的硬编码定义:
class A {
private String[] strings = { "str1", "str2", ... };
public A() {
...
}
...
}
,你可以简单地增加一个二传手(和不断变化的字符串数组,可以动态集合)打破它:
class A {
private ArrayList<String> strings;
public A() {
this.strings = new ArrayList<String>();
...
}
public void addString(String str) {
this.strings.add(str);
}
...
}
如果构造函数中的代码依赖于数组而具有值,那么将其移至新方法并在完成字符串添加后调用它。
至于facebook的数据格式,由于它们返回json,因此很容易获得所需的确切数据,只需提取所需的url并将其添加到列表中即可。
编辑
这是你的代码:
ArrayList<String> listOfURLS;
....
if (json_data.has("picture")) {
for (int j = 0; j < json_data.length(); j++) {
listOfURLS = new ArrayList<String>();
listOfURLS.add(changedString);
}
} else if (json_data.has("object_id")) {
getPictureURL();
listOfURLS = new ArrayList<String>();
listOfURLS.add(finalPictureFromObjectID);
}
当然,这将导致其在listOfUrls只是一个网址,你构建每次一个新的ArrayList ,你不应该那样做。 它应该看起来像这样:
ArrayList<String> listOfURLS;
....
if (json_data.has("picture")) {
for (int j = 0; j < json_data.length(); j++) {
listOfURLS.add(changedString);
}
} else if (json_data.has("object_id")) {
getPictureURL();
listOfURLS.add(finalPictureFromObjectID);
}
你到底在问什么?如何为facebook api结果创建视图?或者如何修改那个例子来做到这一点?如果是这样,那么这个问题太广泛了。如果您遇到更具体的问题,您可以将代码添加到您的问题中吗? – 2012-04-22 20:08:48
我正在拉动Facebook新闻Feed中显示的图片链接。并且使用@ Fedor的Lazy Loading示例,我试图通过字符串数组传递图像链接。字符串阵列ATM是硬编码的。我需要这样做,因为通过JSON获取的链接会随着新闻提要的变化而变化。给我一分钟来添加一些示例代码。 – 2012-04-22 20:12:20
大部分代码都是不相关的,并且与您相关的部分没有放置。* LazyAdapter *的代码在哪里?你说这个问题没有?在这个类中,url是硬编码的,这个对象只使用最后一个url而不是所有这些,所以这就是这里需要的代码。 – 2012-04-23 06:47:28