Как использовать библиотеку 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. Заранее спасибо