Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rifki.kotlin.mygithubfinal.widget
- import android.content.Context
- import android.content.Intent
- import android.graphics.Bitmap
- import android.graphics.BitmapFactory
- import android.os.Binder
- import android.util.Log
- import android.widget.RemoteViews
- import android.widget.RemoteViewsService
- import androidx.core.os.bundleOf
- import com.bumptech.glide.Glide
- import com.rifki.kotlin.mygithubfinal.R
- import com.rifki.kotlin.mygithubfinal.db.FavouriteHelper
- import com.rifki.kotlin.mygithubfinal.helper.MappingHelper
- class StackRemoteViewsFactory(private val mContext: Context) : RemoteViewsService.RemoteViewsFactory{
- //private var listFavouriteUsers : Cursor? = null
- private lateinit var favouriteHelper: FavouriteHelper
- private val widgetItem = ArrayList<Bitmap>()
- override fun onDataSetChanged() {
- favouriteHelper = FavouriteHelper.getInstance(mContext)
- favouriteHelper.open()
- val identityToken = Binder.clearCallingIdentity()
- Binder.restoreCallingIdentity(identityToken)
- try {
- val data = favouriteHelper.queryAll()
- val favourite = MappingHelper.mapCursorToArrayList(data)
- if (favourite.size >= 0) {
- widgetItem.clear()
- for (i in 0 until favourite.size) {
- try {
- val avatar = favourite[i].avatar.toString()
- val bitmap = Glide.with(mContext)
- .asBitmap()
- .load(avatar)
- .submit(100, 100)
- .get()
- widgetItem.add(bitmap)
- } catch (e: Exception) {
- Log.d("ErrorWidget", e.message.toString())
- widgetItem.add(
- BitmapFactory.decodeResource(
- mContext.resources,
- R.drawable.github_logo
- )
- )
- }
- }
- }
- } catch (e: IllegalStateException) {
- Log.d("ErrorWidget", "${e.message}")
- }
- }
- override fun onCreate() {
- favouriteHelper = FavouriteHelper.getInstance(mContext)
- favouriteHelper.open()
- }
- override fun getCount(): Int = widgetItem.size
- override fun getViewAt(position: Int): RemoteViews {
- val rv = RemoteViews(mContext.packageName, R.layout.favorite_user_widget)
- rv.setImageViewBitmap(R.id.imageView, widgetItem[position])
- val extras = bundleOf(
- FavoriteUserWidget.EXTRA_ITEM to position
- )
- val fillInIntent = Intent()
- fillInIntent.putExtras(extras)
- rv.setOnClickFillInIntent(R.id.imageView, fillInIntent)
- return rv
- }
- /* private fun getItem(position: Int): FavouritesItem {
- listFavouriteUsers?.moveToPosition(position)?.let { check(it) { "Position invalid!" } }
- return FavouritesItem(listFavouriteUsers)
- } */
- override fun getLoadingView(): RemoteViews? = null
- override fun getViewTypeCount(): Int = 1
- override fun getItemId(i: Int): Long = 0
- override fun hasStableIds(): Boolean = false
- override fun onDestroy() { }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement