Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. package com.dementiev.realtest
  2.  
  3. import android.content.Context
  4. import android.support.v7.widget.RecyclerView
  5. import android.view.View
  6. import android.view.ViewGroup
  7. import android.widget.TextView
  8. import android.util.TypedValue
  9. import android.view.animation.AnimationUtils
  10. import android.widget.LinearLayout
  11. import android.widget.FrameLayout
  12.  
  13.  
  14. /**
  15. * Example imutable adapter with animations
  16. */
  17. class TestListAdapter(val context: Context, val items: List<Entity1>, val clickListener: (Entity1) -> Unit) : RecyclerView.Adapter<TestListAdapter.TestViewHolder1>() {
  18. /* // This is how our entity class looks
  19. data class Entity1(val _id: Int, val _text: String) {
  20. var id = _id
  21. var text = _text
  22. }
  23. */
  24.  
  25. //optimization of resource usage
  26. private val DP16: Int = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16f, context.resources.displayMetrics).toInt()
  27.  
  28. // do not load the animation here, it wont be beauty, because it is instance of a tweener
  29. //private val animation: Animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left)
  30.  
  31.  
  32. override fun onBindViewHolder(holder: TestViewHolder1?, position: Int) {
  33. val item = getItem(position)
  34. holder?.label?.text = item.text
  35. holder?.container?.setOnClickListener { clickListener(item) }
  36.  
  37. holder?.container?.let { animate(it) } // animate new view
  38. }
  39.  
  40. private fun animate(root: View) {
  41. AnimationUtils
  42. .loadAnimation(context, android.R.anim.slide_in_left)
  43. .let(root::startAnimation)
  44. }
  45.  
  46. override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): TestViewHolder1 {
  47. val layout = FrameLayout(parent?.context)
  48. val lp = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
  49. layout.setPadding(0, DP16, 0, DP16)
  50. layout.layoutParams = lp
  51.  
  52. val textView = TextView(parent?.context)
  53. val tlp = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
  54. textView.layoutParams = tlp
  55. layout.addView(textView)
  56.  
  57. return TestViewHolder1(layout, textView)
  58. }
  59.  
  60. override fun getItemCount(): Int {
  61. return items.size
  62. }
  63.  
  64.  
  65. private fun getItem(position: Int): Entity1 {
  66. return items[position]
  67. }
  68.  
  69. class TestViewHolder1(containerView: View?, textView: TextView?) : RecyclerView.ViewHolder(containerView) {
  70. var container: View? = containerView
  71. var label: TextView? = textView
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement