Advertisement
washinson

Untitled

Jan 27th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.91 KB | None | 0 0
  1. package com.sudox.messenger.android.people.friends
  2.  
  3. import android.content.Context
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import androidx.recyclerview.widget.RecyclerView
  7. import com.sudox.design.lists.sectionedList.SectionedListAdapter
  8. import com.sudox.messenger.android.people.R
  9.  
  10. private const val REQUESTS_VIEW = 0
  11. private const val MAYBE_YOU_KNOW_VIEW = 1
  12. private const val ONLINE_VIEW = 2
  13. private const val OFFLINE_VIEW = 3
  14.  
  15. class FriendAdapter(val context: Context) : SectionedListAdapter<FriendAdapter.ViewHolder>() {
  16.  
  17.     private var requestsSize = 2
  18.     private var maybeYouKnowSize = 0
  19.     private var onlineSize = 0
  20.     private var offlineSize = 0
  21.  
  22.     class ViewHolder(val view: View) : RecyclerView.ViewHolder(view)
  23.  
  24.     override fun getItemCount(): Int {
  25.         return requestsSize +
  26.                 maybeYouKnowSize +
  27.                 onlineSize +
  28.                 offlineSize
  29.     }
  30.  
  31.     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
  32.         var sum = requestsSize
  33.         if (position < sum) {
  34.             val item = holder.view as FriendRequestsItemView
  35.             if (position == 0) {
  36.                 item.apply {
  37.                     setNameText("Anton")
  38.                     setAvatar(context.getDrawable(R.drawable.drawable_photo_1))
  39.                     setOnlineStatus(true)
  40.                 }
  41.             }
  42.             else {
  43.                 item.apply {
  44.                     setNameText("Yaroslav")
  45.                     setAvatar(context.getDrawable(R.drawable.drawable_photo_2))
  46.                     setOnlineStatus(false)
  47.                 }
  48.             }
  49.         }
  50.  
  51.         sum += maybeYouKnowSize
  52.         if (position < sum) {
  53.             // todo: realize maybe you know view
  54.         }
  55.  
  56.         sum += onlineSize
  57.         if (position < sum) {
  58.             // todo: realize online view
  59.         }
  60.         else {
  61.             // todo realize offline view
  62.         }
  63.     }
  64.  
  65.     override fun getSectionName(position: Int): String? {
  66.         var sum = 0
  67.         if (position == sum) {
  68.             return "Friend requests"
  69.         }
  70.  
  71.         sum += requestsSize
  72.         if (position < sum) {
  73.             return null
  74.         }
  75.         if (position == sum) {
  76.             return "Maybe you know"
  77.         }
  78.  
  79.         sum += maybeYouKnowSize
  80.         if (position < sum) {
  81.             return null
  82.         }
  83.         if (position == sum) {
  84.             return "Online" // todo: add string res definition
  85.         }
  86.  
  87.         sum += onlineSize
  88.         if (position < sum) {
  89.             return null
  90.         }
  91.         if (position == sum) {
  92.             return "Offline"
  93.         }
  94.         else {
  95.             return null
  96.         }
  97.     }
  98.  
  99.     override fun getSectionItemsMargin(position: Int): Int {
  100.         var sum = 0
  101.         if (position == sum) {
  102.             return context.resources.getDimensionPixelSize(R.dimen.first_friend_request_margin)
  103.         }
  104.  
  105.         sum += requestsSize
  106.         if (position < sum) {
  107.             return context.resources.getDimensionPixelSize(R.dimen.another_friend_request_margin)
  108.         }
  109.         if (position == sum) {
  110.             return context.resources.getDimensionPixelSize(R.dimen.first_maybe_you_know_margin)
  111.         }
  112.  
  113.         sum += maybeYouKnowSize
  114.         if (position < sum) {
  115.             return context.resources.getDimensionPixelSize(R.dimen.another_maybe_you_know_margin)
  116.         }
  117.         if (position == sum) {
  118.             return context.resources.getDimensionPixelSize(R.dimen.first_online_margin)
  119.         }
  120.  
  121.         sum += onlineSize
  122.         if (position < sum) {
  123.             return context.resources.getDimensionPixelSize(R.dimen.another_online_margin)
  124.         }
  125.         if (position == sum) {
  126.             return context.resources.getDimensionPixelSize(R.dimen.first_offline_margin)
  127.         }
  128.         else {
  129.             return context.resources.getDimensionPixelSize(R.dimen.another_offline_margin)
  130.         }
  131.     }
  132.  
  133.     override fun getItemViewType(position: Int): Int {
  134.         var sum = requestsSize
  135.         if (position < sum) {
  136.             return REQUESTS_VIEW
  137.         }
  138.  
  139.         sum += maybeYouKnowSize
  140.         if (position < sum) {
  141.             return MAYBE_YOU_KNOW_VIEW
  142.         }
  143.  
  144.         sum += onlineSize
  145.         if (position < sum) {
  146.             return ONLINE_VIEW
  147.         }
  148.         else {
  149.             return OFFLINE_VIEW
  150.         }
  151.     }
  152.  
  153.     override fun createItemViewHolder(parent: ViewGroup, viewType: Int): ViewHolder  =
  154.             if (viewType == REQUESTS_VIEW)
  155.                 ViewHolder(FriendRequestsItemView(context))
  156.             else if (viewType == MAYBE_YOU_KNOW_VIEW)
  157.                 ViewHolder(FriendRequestsItemView(context)) // todo: fix it
  158.             else if (viewType == ONLINE_VIEW)
  159.                 ViewHolder(FriendRequestsItemView(context)) // todo: fix it
  160.             else
  161.                 ViewHolder(FriendRequestsItemView(context)) // todo: fix it
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement