Coverage Summary for Class: BaseRcvAdapterData (kr.open.library.simple_ui.xml.ui.adapter.normal.base)

Class Class, % Method, % Branch, % Line, % Instruction, %
BaseRcvAdapterData 100% (1/1) 78.6% (11/14) 50% (1/2) 75.7% (28/37) 71.5% (103/144)


 package kr.open.library.simple_ui.xml.ui.adapter.normal.base
 
 import androidx.recyclerview.widget.RecyclerView
 
 /**
  * Section data store for BaseRcvAdapter.<br><br>
  * BaseRcvAdapter의 섹션 데이터 저장소입니다.<br>
  */
 internal open class BaseRcvAdapterData<ITEM> {
     /**
      * Mutable content section items.<br><br>
      * content 섹션의 가변 아이템 목록입니다.<br>
      */
     internal val contentItems: MutableList<ITEM> = mutableListOf()
 
     /**
      * Returns total item count.<br><br>
      * 전체 아이템 개수를 반환합니다.<br>
      */
     internal open fun getTotalSize(): Int = contentItems.size
 
     /**
      * Replaces all content items.<br><br>
      * content 아이템 전체를 교체합니다.<br>
      */
     internal fun setContentItems(items: List<ITEM>) {
         contentItems.clear()
         contentItems.addAll(items)
     }
 
     /**
      * Appends one content item and returns adapter insert position.<br><br>
      * content 아이템을 1개 추가하고 adapter 삽입 위치를 반환합니다.<br>
      */
     internal fun addContentItem(item: ITEM): Int {
         val insertStart = contentToAdapterPosition(contentItems.size)
         contentItems.add(item)
         return insertStart
     }
 
     /**
      * Inserts one content item and returns adapter insert position.<br><br>
      * content 아이템을 삽입하고 adapter 삽입 위치를 반환합니다.<br>
      */
     internal fun addContentItemAt(position: Int, item: ITEM): Int {
         val insertStart = contentToAdapterPosition(position)
         contentItems.add(position, item)
         return insertStart
     }
 
     /**
      * Appends content items and returns adapter insert start position.<br><br>
      * content 아이템 목록을 추가하고 adapter 삽입 시작 위치를 반환합니다.<br>
      */
     internal fun addContentItems(items: List<ITEM>): Int {
         val insertStart = contentToAdapterPosition(contentItems.size)
         contentItems.addAll(items)
         return insertStart
     }
 
     /**
      * Inserts content items at section position and returns adapter start position.<br><br>
      * content 섹션 위치에 아이템 목록을 삽입하고 adapter 시작 위치를 반환합니다.<br>
      */
     internal fun addContentItemsAt(position: Int, items: List<ITEM>): Int {
         val insertStart = contentToAdapterPosition(position)
         contentItems.addAll(position, items)
         return insertStart
     }
 
     /**
      * Removes first matching content item and returns removed adapter position.<br><br>
      * 일치하는 첫 번째 content 아이템을 제거하고 제거된 adapter 위치를 반환합니다.<br>
      */
     internal fun removeContentItem(item: ITEM): Int {
         val contentPosition = contentItems.indexOf(item)
         if (contentPosition == RecyclerView.NO_POSITION) {
             return RecyclerView.NO_POSITION
         }
         contentItems.removeAt(contentPosition)
         return contentToAdapterPosition(contentPosition)
     }
 
     /**
      * Removes content range and returns adapter start position.<br><br>
      * content 구간을 제거하고 adapter 시작 위치를 반환합니다.<br>
      */
     internal fun removeContentRange(startPosition: Int, endExclusivePosition: Int): Int {
         val startAdapterPosition = contentToAdapterPosition(startPosition)
         contentItems.subList(startPosition, endExclusivePosition).clear()
         return startAdapterPosition
     }
 
     /**
      * Removes one content item and returns removed adapter position.<br><br>
      * content 아이템을 1개 제거하고 제거된 adapter 위치를 반환합니다.<br>
      */
     internal fun removeContentAt(position: Int): Int {
         val adapterPosition = contentToAdapterPosition(position)
         contentItems.removeAt(position)
         return adapterPosition
     }
 
     /**
      * Clears all content items and returns removed count.<br><br>
      * content 아이템 전체를 제거하고 제거 개수를 반환합니다.<br>
      */
     internal fun removeAllContentItems(): Int {
         val removedCount = contentItems.size
         contentItems.clear()
         return removedCount
     }
 
     /**
      * Moves content item and returns adapter from/to positions.<br><br>
      * content 아이템을 이동하고 adapter 이동 전/후 위치를 반환합니다.<br>
      */
     internal fun moveContentItem(fromPosition: Int, toPosition: Int): Pair<Int, Int> {
         val item = contentItems.removeAt(fromPosition)
         contentItems.add(toPosition, item)
         return contentToAdapterPosition(fromPosition) to contentToAdapterPosition(toPosition)
     }
 
     /**
      * Replaces content item and returns adapter changed position.<br><br>
      * content 아이템을 교체하고 adapter 변경 위치를 반환합니다.<br>
      */
     internal fun replaceContentAt(position: Int, item: ITEM): Int {
         contentItems[position] = item
         return contentToAdapterPosition(position)
     }
 
     /**
      * Converts content section position to adapter position.<br><br>
      * content 섹션 위치를 adapter 위치로 변환합니다.<br>
      */
     internal open fun contentToAdapterPosition(contentPosition: Int): Int = contentPosition
 }