Skip to content

Instantly share code, notes, and snippets.

@Ayush783
Created July 15, 2024 08:06
Show Gist options
  • Save Ayush783/e1bcd7609dbe5ba1e1b29eaea8c48d59 to your computer and use it in GitHub Desktop.
Save Ayush783/e1bcd7609dbe5ba1e1b29eaea8c48d59 to your computer and use it in GitHub Desktop.
class ListViewAppWidgetProvider : HomeWidgetProvider() {
override fun onUpdate(
context: Context,
appWidgetManager: AppWidgetManager,
appWidgetIds: IntArray,
widgetData: SharedPreferences
) {
// Attempts to get the data from shared preferences
val data = HomeWidgetPlugin.getData(context).getString("NEWS_ARTICLES_DATA","")
appWidgetIds.forEach { id ->
var views: RemoteViews?
if(data!!.isNotEmpty()) {
views = createListView(context, id, data)
} else {
views = RemoteViews(context.packageName,R.layout.listview_widget_loader)
// initiate work request if no data is found
initiateWorkRequest(context, id)
}
appWidgetManager.updateAppWidget(id, views)
}
}
private fun initiateWorkRequest(context: Context, id: Int) {
val workRequest: WorkRequest = OneTimeWorkRequest.Builder(UpdateWidgetWorker::class.java).setInputData(
Data.Builder().putInt("widgetId", id).build()
).build()
WorkManager.getInstance(context).enqueue(workRequest)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment