OutlineAdapter.kt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.kdanmobile.reader.screen.adapter
  2. import android.view.LayoutInflater
  3. import android.view.View
  4. import android.view.ViewGroup
  5. import android.widget.BaseAdapter
  6. import android.widget.TextView
  7. import com.kdanmobile.kmpdfkit.pdfcommon.OutlineItem
  8. import com.kdanmobile.reader.R
  9. class OutlineAdapter(private val outlineListItems: List<OutlineItem>): BaseAdapter() {
  10. override fun getCount(): Int {
  11. return outlineListItems.size
  12. }
  13. override fun getItem(position: Int): OutlineItem? {
  14. return if (position >= 0 && position < outlineListItems.size) outlineListItems[position] else null
  15. }
  16. override fun getItemId(position: Int): Long {
  17. return position.toLong()
  18. }
  19. override fun getView(position: Int, view: View?, parent: ViewGroup): View {
  20. var view1 = view
  21. val holderView: HolderView
  22. if (view1 == null) {
  23. view1 = LayoutInflater.from(parent.context).inflate(R.layout.outline_entry, null) as View
  24. holderView = HolderView(view1)
  25. view1.tag = holderView
  26. } else {
  27. holderView = view1.tag as HolderView
  28. }
  29. val item = getItem(position)
  30. /****** 大纲层次缩进 */
  31. var space = ""
  32. val null_str = parent.context.getString(R.string.null_str)
  33. for (i in 1 .. item!!.level) {
  34. space += null_str + null_str
  35. }
  36. holderView.tv_name.text = space + item.title
  37. holderView.tv_name.textSize = (15 - item.level * 1.2f)
  38. holderView.tv_page.text = (item.page + 1).toString()
  39. return view1
  40. }
  41. private class HolderView(view: View) {
  42. var tv_name: TextView
  43. var tv_page: TextView
  44. init {
  45. tv_name = view.findViewById<View>(R.id.tv_outlineEntry_title) as TextView
  46. tv_page = view.findViewById<View>(R.id.tv_outlineEntry_page) as TextView
  47. }
  48. }
  49. }