Как использовать библиотеку Retrofit на виджете?

У меня есть Api, и я использую Retrofit для того, чтобы получить JSON-данные с сайта. Однако всё это работает у меня в приложении, но не на виджете. Мне нужно получить данные с использованием библиотеки Retrofit на виджете и положить эти данные в TextView. Не понимаю, как мне решить эту проблему. Используя Log, видно, что данные успешно получены, но я не понимаю как мне положить их в TextView.

Код виджета

public class CovidTrackerWidgetProvider extends AppWidgetProvider {
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {

        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.loading_appwidget);
        String country = Settings.getUserSettings(context).getCountry();
        List<CovidData> covidDataList = new ArrayList<>();

        views.setTextViewText(R.id.multiAutoCompleteTextView, country);
        views.setTextViewText(R.id.textView5, "updated");

        views.setTextViewText(R.id.textView3, "tests");
        views.setTextViewText(R.id.textView2, "today recovered");
        views.setTextViewText(R.id.textView, "today cases");
        views.setTextViewText(R.id.textView1, "today deaths");
        views.setTextViewText(R.id.textView7, "active");
        views.setTextViewText(R.id.textView4, "critical");

        views.setTextViewText(R.id.tests, "...");
        views.setTextViewText(R.id.todayRecovered, "...");
        views.setTextViewText(R.id.todayCases, "...");
        views.setTextViewText(R.id.todayDeaths, "...");
        views.setTextViewText(R.id.active, "...");
        views.setTextViewText(R.id.critical, "...");

        ApiUtilities.getApiInterface().getCountries().enqueue(new Callback<List<CovidData>>() {
            @Override
            public void onResponse(@NonNull Call<List<CovidData>> call, @NonNull Response<List<CovidData>> response) {
                if (response.body() != null) {
                    covidDataList.addAll(response.body());

                    for (int i = 0; i < covidDataList.size(); i++) {
                        if (country.equals(covidDataList.get(i).getCountry())) {

                            CovidData covidData = covidDataList.get(i);
                            String when = new SimpleDateFormat("MMM d, h:mm a", Locale.getDefault()).format(new Date(covidDataList.get(i).getUpdated()));

                            // вот эта строчка не выполняется:(
                            views.setTextViewText(R.id.textViewUpdate, when);


                        }
                    }
                }
            }

            @Override
            public void onFailure(@NonNull Call<List<CovidData>> call, @NonNull Throwable t) {
            }
        });

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
}

Не понимаю, как решить проблему установки данных в TextView. Заранее спасибо


Ответы (0 шт):