Есть ли эквивалент transformItems в библиотеках Android Java для Algolia?

У меня есть вариант использования, когда я хотел бы визуализировать изображение, связанное с попаданиями, полученными при поиске в Algolia, с использованием библиотеки Java Algolia для Android. В настоящее время я разрабатываю Pie. Вот что я делаю:

  1. Я использую com.algolia.instantsearch.core.helpers.Searcher
  2. Я привязываю результаты к фрагменту, который имеет макет с атрибутами algolia для изображений

    <ImageView
         algolia:attribute='@{"image_url"}'
    >
    
  3. Проблема в том, что ответ JSON хранит только имя изображения JPG, которое необходимо отобразить. Мне нужно динамически добавлять URL-адрес базового сайта и еще несколько указателей пути. Я пробовал сделать что-то вроде этого

    algolia:attribute='https://somedomain.com/somepath1/ProductImages/@{"BaseProductId"}/thumbnails/@{"image_url"}

    Но это не было принято.

  4. Я ищу способ преобразовать результаты, чтобы я мог создать полный URL-адрес и поместить его в image_url, а затем использовать его в макете, как указано в первом фрагменте кода.

Есть ли способ это сделать?


person thegrid    schedule 15.03.2020    source источник


Ответы (1)


Я решил это, добавив слушателя и обновив объект hits, как показано ниже.

 searcher.registerResultListener(new AlgoliaResultsListener() {
                 @Override
                 public void onResults(@NonNull SearchResults results, boolean isLoadingMore) {
                     for (int i=0;i<results.hits.length();i++){
                         try {
                                JSONObject obj = results.hits.getJSONObject(i);
                                String image_url_file = obj.getString("image_url");
                                String base_product_id = obj.getString("BaseProductId");
                                String full_image_path = "https://somedomain.com/somPath/ProductImages/"+base_product_id+"/Original/"+image_url_file;
                                results.hits.getJSONObject(i).put("image_url",full_image_path);
                         }catch(Exception exx){

                         }
                     }
                 }
             }
        );
person thegrid    schedule 16.03.2020
comment
Вы также можете использовать атрибут algolia: prefix в android XML - person thegrid; 25.03.2020