我正在android studio中使用GraphQL。而现在我只获得一张产品图片。
但是我想分别获取产品的所有图像。
下面是我的Java代码与Java。
1)通过附加产品ID获得产品的产品图片。
querySEC = Storefront.query(rootQuery -> rootQuery
.node(new ID(moviesList.get(position).getId().toString()), nodeQuery -> nodeQuery
.onProduct(productQuery -> productQuery
.title()
.description()
.images(arg -> arg.first(10), imageConnectionQuery -> imageConnectionQuery
.edges(imageEdgeQuery -> imageEdgeQuery
.node(imageQuery -> imageQuery
.src()
)
)
)
.variants(arg -> arg.first(10), variantConnectionQuery -> variantConnectionQuery
.edges(variantEdgeQuery -> variantEdgeQuery
.node(productVariantQuery -> productVariantQuery
.price()
.title()
.available()
)
)
)
)
)
);
2)然后我调用此方法在Imageview中设置图像
graphClient.queryGraph(querySEC).enqueue(new GraphCall.Callback<Storefront.QueryRoot>()
{
@Override
public void onResponse(@NonNull GraphResponse<Storefront.QueryRoot> response)
{
Storefront.Product product = (Storefront.Product) response.data().getNode();
List<Storefront.Image> productImages = new ArrayList<>();
for (final Storefront.ImageEdge imageEdge : product.getImages().getEdges())
{
productImages.add(imageEdge.getNode());
}
List<Storefront.ProductVariant> productVariants = new ArrayList<>();
for (final Storefront.ProductVariantEdge productVariantEdge : product.getVariants().getEdges())
{
productVariants.add(productVariantEdge.getNode());
}
((MainActivity)context).runOnUiThread(new Runnable()
{
@Override
public void run()
{
for (int i = 0; i <productImages.size() ; i++) {
Glide.with(((MainActivity)context))
.load(productImages.get(productImages.listIterator().nextIndex()).getSrc())
.into((ImageView)
((MainActivity)context).
findViewById(R.id.img_prdimg));
}
}
});
}
@Override
public void onFailure(@NonNull GraphError error)
{
}
});
查看此图片以了解问题所在。