Skip to content

Instantly share code, notes, and snippets.

View DjakaTechnology's full-sized avatar
🏠

Djaka Pradana Jaya Priambudi DjakaTechnology

🏠
View GitHub Profile
@DjakaTechnology
DjakaTechnology / FeedAdapterOld.kt
Created January 15, 2020 16:29
FeedAdapterWIthoutStories
class FeedAdapterOld(var items: List<FeedItem> = listOf()) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun getItemViewType(position: Int): Int {
return when(items[position]) {
is FeedPostItem -> ITEM_POST_ID
is FeedStandardItem -> ITEM_STANDARD_ID
else -> -1
}
}
class FeedAdapterOld(var items: List<FeedItem> = listOf()) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun getItemViewType(position: Int): Int {
return when(items[position]) {
is FeedPostItem -> ITEM_POST_ID
is FeedStandardItem -> ITEM_STANDARD_ID
is FeedStoryItem -> ITEM_STORY_ID
else -> -1
}
}
class GenericAdapter<T>(var items: List<T>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private val delegateManager = AdapterDelegateManager<T>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return delegateManager.onCreateViewHolder(parent, viewType)
}
override fun getItemCount(): Int {
return items.size
class AdapterDelegateManager<T> {
private val delegates = mutableListOf<AdapterDelegate<T>>()
fun addDelegate(delegate: AdapterDelegate<T>) {
delegates.add(delegate)
}
fun getItemViewType(items: List<T>, position: Int): Int {
delegates.forEachIndexed { index, it -> if (it.isForViewType(items, position)) return index }
interface AdapterDelegate <T> {
fun isForViewType(items: List<T>, position: Int): Boolean
fun onCreateViewHolder(parent: ViewGroup): RecyclerView.ViewHolder
fun onBindViewHolder(items: List<T>, position: Int, holder: RecyclerView.ViewHolder)
}
v.img_icon.run {
when(data[i].permissionTypeId){
1 -> setImageDrawable(ContextCompat.getDrawable(c, R.drawable.ic_plus))
2 -> setImageDrawable(ContextCompat.getDrawable(c, R.drawable.ic_permission_green))
3 -> setImageDrawable(ContextCompat.getDrawable(c, R.drawable.ic_clock_orange))
}
}
v.tv_status.run{
when(data[i].statusId){
fun getUserModel(c: Context): UserModel? {
val pref = c.getSharedPreferences(Session.SESSION, MODE_PRIVATE)
return try {
Gson().fromJson<UserModel>(pref.getString(Session.USER, null), UserModel::class.java)
} catch (e: Exception) { null }
}
if (data[i].value != null) {
Glide.with(c).load(data[i].value).apply(
RequestOptions()
.placeholder(R.drawable.loading)
.fitCenter()
).into(myViewHolder.itemView.img_thumbnail)
myViewHolder.itemView.img_thumbnail.setOnClickListener {
var i = Intent(c, ImageActivity::class.java)
i.putExtra(SharedKey.App.ID, data[myViewHolder.adapterPosition].value)
private fun doUpload(fileToUpload: MultipartBody.Part) {
uploadJob = CoroutineScope(Dispatchers.IO).launch {
val result = Request.uploadImg(baseContext, fileToUpload)
withContext(Dispatchers.Main) {
if (result.result == true) onSucceed(result)
}
}
}
object Request{
suspend fun login(context:Context, email:String, password:String, token:String):UserModel?{
val api = getApiService(context)
val request = api.login(email, password, token)
return try{
return request.await().body()!!
}catch (e: Exception){
Log.e("TAG", "Login Failed" + e.message)
null
}