【问题标题】:What kind of Adapter should I use for JSON in Android?我应该为 Android 中的 JSON 使用哪种适配器?
【发布时间】:2014-01-18 23:32:17
【问题描述】:

我正在尝试使用我博客中的 JSON 输出。我正在从我的 WordPress 网站获取最后 10 篇文章,并且能够在 android 中成功地从中获取数据并将其设置为 TextView。所以我确信我所有的网络都有效。现在,我需要将此作为主细节布局。因此,在我的主布局中,我要做的就是列出 post_title,而在详细信息中,我想列出 post_content。所以这意味着我必须创建一个适配器。我感到困惑的是,最好使用哪种适配器?我不确定应该使用哪种对象。
下面是我用来获取 1 个 post_titles 和 post_content 的代码。任何人都可以给我任何方向吗?我在想我可以只使用一个 ArrayList 来保存 post_titles,另一个 arrayList 来保存 post_content,但是帖子内容可能非常大。我想知道是否有人能指出我正确的方向?

我正在尝试使用 cwac-endless adapter 以便加载更多博客文章,但它只是一个包装器。所以我仍然坚持创建我的原始适配器,我仍然不确定如何实现它。

public void parseJson(JsonObject result){
    JsonObject jsonPost = result.getAsJsonArray("posts").get(0).getAsJsonObject();  
    String title = jsonPost.get("title").getAsString();
    String content = jsonPost.get("content").getAsString();
}

【问题讨论】:

  • 请注意,the documentation for CWAC-Endless 有“请注意,这已经用 ArrayAdapter 进行了广泛的测试,但可能不适用于其他适配器类型,尤其是 SimpleAdapter”。像这样的建议可能会帮助您采用适当的 Adapter 实施。
  • 我不知道BaseAdapter和ArrayAdapter之间有这么大的区别。稍后我会详细阅读它们。

标签: java android android-listview android-arrayadapter commonsware-cwac


【解决方案1】:

我建议你使用ArrayAdapter.

你可以做的是:

为您的博客输出创建一个自定义对象。 像这样的

public class BlogItem{

private String title;
private String content;
//put getters and setters and all other member functions according to your application
}

然后创建一个 BlogItem 的适配器。

public class BlogAdapter extends ArrayAdapter<BlogItem> {
}

重写 ArrayAdapter 的方法,特别是不要忘记重写 getCount() 方法并返回列表中的项目数。

看,如果你有一个像这样的自定义对象和数组适配器,将来,即使你想扩大规模,比如说,现在有了标题和内容你还想要图像(或更多的文本字段),你可以轻松地扩大规模使用自定义对象。 此外,当您收到 JSON 响应时,只需将 JSONdata 放入对象中即可。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    查看this 答案,了解有关 ArrayAdapter、CursorAdapterCustomAdapter 的说明

    【讨论】:

    • 那么Android中的适配器只能通过数组或游标返回?
    • @EGHDK: 否。BaseAdapter 可用于创建适应任意数据模型的ListAdapter。但是,使用BaseAdapter 比使用ArrayAdapterCursorAdapter 稍微复杂一些,因为您需要做更多的工作。因此,if your data model already is an array of objects 使用 ArrayAdapter 是比使用 BaseAdapter 更好的选择,因为您可以节省工作而不会丢失任何内容。
    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多