如何从Android中的Contentful中的空格中检索条目

ojo*_*ifu 1 android contentful

刚刚开始使用这项服务,文档有点令人困惑.我创建了一个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");
}
Run Code Online (Sandbox Code Playgroud)

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

Log.e(TAG, "Result: " + entry.toString());
Run Code Online (Sandbox Code Playgroud)

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

E/NEWS ACTIVITY? Result: CDAEntry{id='2YhtjbebgscIwO2keYEa4O'}
Run Code Online (Sandbox Code Playgroud)

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

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

Tom*_*Tom 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");
Run Code Online (Sandbox Code Playgroud)

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

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

最后要注意的是,在某些情况下,每次创建活动/片段时从网络中获取资源都会被视为浪费,最好将资源持久保存到本地数据库并使其在脱机模式下可访问.为此,您可能需要查看Vault,它是一个注释处理器,可帮助您以最少的工作量从Contentite上保存Contentful数据,它使用Contentful Sync API从给定空间获取增量更新,并减少电池和数据消耗同时也有助于提供更好的离线行为.

适用于Java/Android SDK的JavaDoc位于:http://contentful.github.io/contentful.java/

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

干杯!