Advertisement
rifki_cs29

StackRemoteViewsFactory

Jul 8th, 2020
1,378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.32 KB | None | 0 0
  1. package com.rifki.kotlin.mygithubfinal.widget
  2.  
  3. import android.content.Context
  4. import android.content.Intent
  5. import android.graphics.Bitmap
  6. import android.graphics.BitmapFactory
  7.  
  8. import android.os.Binder
  9. import android.util.Log
  10. import android.widget.RemoteViews
  11. import android.widget.RemoteViewsService
  12. import androidx.core.os.bundleOf
  13. import com.bumptech.glide.Glide
  14. import com.rifki.kotlin.mygithubfinal.R
  15. import com.rifki.kotlin.mygithubfinal.db.FavouriteHelper
  16. import com.rifki.kotlin.mygithubfinal.helper.MappingHelper
  17.  
  18. class StackRemoteViewsFactory(private val mContext: Context) : RemoteViewsService.RemoteViewsFactory{
  19.  
  20.     //private var listFavouriteUsers : Cursor? = null
  21.  
  22.     private lateinit var favouriteHelper: FavouriteHelper
  23.     private val widgetItem = ArrayList<Bitmap>()
  24.  
  25.     override fun onDataSetChanged() {
  26.         favouriteHelper = FavouriteHelper.getInstance(mContext)
  27.         favouriteHelper.open()
  28.  
  29.         val identityToken = Binder.clearCallingIdentity()
  30.         Binder.restoreCallingIdentity(identityToken)
  31.  
  32.         try {
  33.             val data = favouriteHelper.queryAll()
  34.             val favourite = MappingHelper.mapCursorToArrayList(data)
  35.             if (favourite.size >= 0) {
  36.                 widgetItem.clear()
  37.                 for (i in 0 until favourite.size) {
  38.                     try {
  39.                         val avatar = favourite[i].avatar.toString()
  40.                         val bitmap = Glide.with(mContext)
  41.                             .asBitmap()
  42.                             .load(avatar)
  43.                             .submit(100, 100)
  44.                             .get()
  45.                         widgetItem.add(bitmap)
  46.                     } catch (e: Exception) {
  47.                         Log.d("ErrorWidget", e.message.toString())
  48.                         widgetItem.add(
  49.                             BitmapFactory.decodeResource(
  50.                                 mContext.resources,
  51.                                 R.drawable.github_logo
  52.                             )
  53.                         )
  54.                     }
  55.                 }
  56.             }
  57.         } catch (e: IllegalStateException) {
  58.             Log.d("ErrorWidget", "${e.message}")
  59.         }
  60.     }
  61.  
  62.     override fun onCreate() {
  63.         favouriteHelper = FavouriteHelper.getInstance(mContext)
  64.         favouriteHelper.open()
  65.     }
  66.  
  67.     override fun getCount(): Int = widgetItem.size
  68.  
  69.     override fun getViewAt(position: Int): RemoteViews {
  70.         val rv = RemoteViews(mContext.packageName, R.layout.favorite_user_widget)
  71.         rv.setImageViewBitmap(R.id.imageView, widgetItem[position])
  72.  
  73.         val extras = bundleOf(
  74.             FavoriteUserWidget.EXTRA_ITEM to position
  75.         )
  76.  
  77.         val fillInIntent = Intent()
  78.         fillInIntent.putExtras(extras)
  79.         rv.setOnClickFillInIntent(R.id.imageView, fillInIntent)
  80.         return rv
  81.     }
  82.  
  83.     /* private fun getItem(position: Int): FavouritesItem {
  84.          listFavouriteUsers?.moveToPosition(position)?.let { check(it) { "Position invalid!" } }
  85.          return FavouritesItem(listFavouriteUsers)
  86.      } */
  87.  
  88.     override fun getLoadingView(): RemoteViews? = null
  89.  
  90.     override fun getViewTypeCount(): Int = 1
  91.  
  92.     override fun getItemId(i: Int): Long = 0
  93.  
  94.     override fun hasStableIds(): Boolean = false
  95.  
  96.     override fun onDestroy() { }
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement