1

今天刚开始使用此服务,文档有点混乱。我Space使用照片库模板创建了一个。在这个空间中,我有图像、作者和照片库类型的条目。我的问题是,如何检索图像以在我的 android 应用程序中显示?

要与 进行交互Contentful Delivery API,我知道我必须使用CDAClient对象和CDAEntry对象来获取要获取的条目。

我已经在我的类的onCreate()方法中定义了它,如下所示:Fragment

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = getActivity();

    client = CDAClient.builder()
            .setSpace("id-of-the-space-am-accessing")
            .setToken("the-access-token")
            .build();

    entry = client.fetch(CDAEntry.class).one("the id of the image I want to retrieve");
}

在该onCreateView()方法中,我试图查看这样的结果:

Log.e(TAG, "Result: " + entry.toString());

当我运行应用程序时,我在 Logcat 中得到了这个:

E/NEWS ACTIVITY﹕ Result: CDAEntry{id='2YhtjbebgscIwO2keYEa4O'}

此 id 与我传递给的图像的 id 匹配client.fetch(CDAEntry.class).one()

显然正在获取图像,但是如何显示它?

4

1 回答 1

6

引用官方文档

内容类型

内容类型是描述条目形状的方案。它们主要由作为条目蓝图的字段列表组成。

资产

资产代表空间中的文件。资产可以是任何类型的文件:图像、视频、音频文件、PDF 或任何其他文件类型。资产通常通过链接附加到条目。

入口

条目是包含在空间中的文档。它们可能代表博客文章或事件或您为其定义了内容类型的任何其他内容。

空间

Contentful 中的所有内容都属于一个空间。您可以考虑像数据库这样的空间,通常至少有一个空间用于项目,但可能会选择使用单独的空间进行测试。

如上所述,有一个包装资产的条目是很常见的,以便包含一些关于它的额外元数据。例如,考虑Image具有以下字段集的类型:

  • 标题 - 短文本
  • 照片 - 资产链接
  • imageCaption - 长文本
  • imageCredits - 长文本

对于 Java/Android SDK,这些属性可以通过getField()条目的方法访问:

CDAEntry imageEntry = client.fetch(CDAEntry.class).one("foo");
String title = imageEntry.getField("title");
CDAAsset photo = imageEntry.getField("photo");
String photoUrl = photo.url(); // URL of the linked photo
String imageCaption = imageEntry.getField("imageCaption");
String imageCredits = imageEntry.getField("imageCredits");

请注意,该getField()方法推断返回类型以避免显式转换,因此请确保在调用它时使用正确的类型。

值得一提的是,该one(String id)方法是同步的,并且会在调用线程上执行 IO,因此您可以使用one(String id, CDACallback callback)或者如果您对 RxJava 感到满意,也client.observe()可以使用Observable.

最后一点是,在某些情况下,每次创建活动/片段时从网络获取资源可能被认为是一种浪费,最好将资源持久保存到本地数据库并在离线模式下访问它。为此,您可能需要查看Vault,这是一个注释处理器,可帮助您通过 SQLite 以最小的努力持久化来自 Contentful 的数据,它使用 Contentful Sync API 从给定空间获取增量更新,从而减少电池和数据消耗同时还有助于提供更好的离线行为。

Java/Android SDK 的 JavaDoc 在这里:http ://contentful.github.io/contentful.java/

还有一些开源示例应用程序展示了 Vault 与空间模板的使用,照片库模板可在此处获得:https ://github.com/contentful/gallery-app-android

干杯!

于 2015-08-07T14:08:11.750 回答