Я использую GraphQL в андроид студии.И сейчас я получаю только одно изображение продукта.
Но я хочу получить все изображения продуктов соответственно.
Ниже приведен мой код для Android с Java.
1) Получите изображение продукта, добавив его идентификатор.
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)
{
}
});
Проверкаэто изображение для понимания проблемы.