Guest User

Untitled

a guest
Mar 6th, 2021
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.61 KB | None | 0 0
  1. package com.example.r34university
  2.  
  3. import android.os.Bundle
  4. import android.view.KeyEvent
  5. import android.view.LayoutInflater
  6. import android.view.View
  7. import android.view.ViewGroup
  8. import android.widget.RelativeLayout
  9. import android.widget.TextView
  10. import androidx.core.content.ContextCompat
  11. import androidx.fragment.app.Fragment
  12. import com.example.r34university.databinding.PageBarFragmentBinding
  13. import kotlinx.android.synthetic.main.tag_item.view.*
  14. import parsers.ContentParser
  15.  
  16. class PageBarFragment : Fragment() {
  17.     var pageCount: Int = 0
  18.     private var currentPage = 1
  19.     private var _binding: PageBarFragmentBinding? = null
  20.     private val binding get() = _binding!!
  21.     private val pageTextView: TextView get() = buildPageTextView()
  22.     private lateinit var communicator: Communicator
  23.  
  24.     override fun onCreateView(
  25.         inflater: LayoutInflater,
  26.         container: ViewGroup?,
  27.         savedInstanceState: Bundle?
  28.     ): View {
  29.         _binding = PageBarFragmentBinding.inflate(inflater, container, false)
  30.         return binding.root
  31.     }
  32.  
  33.     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
  34.         super.onViewCreated(view, savedInstanceState)
  35.         communicator = activity as Communicator
  36.         buildPageTextView()
  37.         updatePageList()
  38.  
  39.         binding.pageNumberField.setOnKeyListener(View.OnKeyListener{ v, keyCode, event ->
  40.             if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) {
  41.                 currentPage = binding.pageNumberField.text.toString().toInt()
  42.                 changePage(currentPage)
  43.  
  44.                 binding.pageNumberField.setText("")
  45.                 (activity as ResultsActivity).hideKeyboard()
  46.                 return@OnKeyListener true
  47.             }
  48.             false
  49.         })
  50.  
  51.         binding.prevPageButton.setOnClickListener {
  52.             if (currentPage == 1) {
  53.                 return@setOnClickListener
  54.             }
  55.             currentPage--
  56.             changePage(currentPage)
  57.         }
  58.  
  59.         binding.nextPageButton.setOnClickListener {
  60.             if (currentPage == pageCount) {
  61.                 return@setOnClickListener
  62.             }
  63.             currentPage++
  64.             changePage(currentPage)
  65.         }
  66.     }
  67.  
  68.  
  69. // HELP тут вот создаю TextView
  70.     private fun buildPageTextView(): TextView {
  71.         val pageTextView = TextView(context)
  72.         pageTextView.setOnClickListener {
  73.             currentPage = pageTextView.text.toString().toInt()
  74.             changePage(currentPage)
  75.         }
  76.  
  77.         val params = RelativeLayout.LayoutParams(
  78.             ViewGroup.LayoutParams.WRAP_CONTENT,
  79.             ViewGroup.LayoutParams.MATCH_PARENT)
  80.         params.rightMargin = 8
  81.         pageTextView.layoutParams = params
  82.         pageTextView.textAlignment = View.TEXT_ALIGNMENT_CENTER
  83.         pageTextView.textSize = 20.toFloat()
  84.  
  85.         val textColor = ContextCompat.getColor(requireContext(), R.color.colorText)
  86.         pageTextView.setTextColor(textColor)
  87.         return pageTextView
  88.     }
  89.  
  90.     fun updatePageList() {
  91.         binding.pageList.removeAllViewsInLayout()
  92.         if (pageCount <= 1) {
  93.             binding.root.visibility = View.GONE
  94.             return
  95.         }
  96.         binding.root.visibility = View.VISIBLE
  97. // HELP вот как добавляю
  98.         fun addPagesRange(start: Int, end: Int) {
  99.             for (page in start..end) {
  100.                 val pageView = pageTextView
  101.                 pageView.text = page.toString()
  102.                 if (page == currentPage) {
  103.                     val accentColor = ContextCompat.getColor(requireContext(), R.color.colorLinkText)
  104.                     pageView.setTextColor(accentColor)
  105.                 }
  106.                 binding.pageList.addView(pageView)
  107.             }
  108.         }
  109.  
  110.         if (((pageCount - currentPage) >= 5 && currentPage >= 2) || (pageCount > 7 && currentPage <= 2)) {
  111.             var startPage = currentPage - 1
  112.             var thirdPage = currentPage + 1
  113.  
  114.             if (currentPage == 1) {
  115.                 startPage = currentPage
  116.                 thirdPage = currentPage + 2
  117.             }
  118.  
  119.             addPagesRange(startPage, thirdPage)
  120.  
  121.             val dotPageView = pageTextView
  122.             dotPageView.text = "..."
  123.             binding.pageList.addView(dotPageView)
  124.  
  125.             addPagesRange(pageCount-2, pageCount)
  126.         } else {
  127.             addPagesRange(currentPage-1, pageCount)
  128.         }
  129.     }
  130.  
  131.     private fun changePage(page: Int) {
  132.         val items = ContentParser.search(page = page)
  133.         communicator.passSearchResults(items)
  134.         updatePageList()
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment