parent
b677ac0377
commit
c6aa88afb5
@ -0,0 +1,57 @@ |
|||||||
|
package net.pokeranalytics.android.ui.view |
||||||
|
|
||||||
|
import androidx.annotation.Nullable |
||||||
|
import androidx.recyclerview.widget.DiffUtil |
||||||
|
import net.pokeranalytics.android.model.realm.Session |
||||||
|
import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable |
||||||
|
|
||||||
|
class HistorySessionDiffCallback(var newRows: List<RowRepresentable>, var oldRows: List<RowRepresentable>) : |
||||||
|
DiffUtil.Callback() { |
||||||
|
|
||||||
|
override fun getOldListSize(): Int { |
||||||
|
return oldRows.size |
||||||
|
} |
||||||
|
|
||||||
|
override fun getNewListSize(): Int { |
||||||
|
return newRows.size |
||||||
|
} |
||||||
|
|
||||||
|
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { |
||||||
|
|
||||||
|
if (oldRows[oldItemPosition] is Session && newRows[newItemPosition] is Session) { |
||||||
|
val session1 = oldRows[oldItemPosition] as Session |
||||||
|
val session2 = newRows[newItemPosition] as Session |
||||||
|
return session1.id == session2.id |
||||||
|
} else if (oldRows[oldItemPosition] is HeaderRowRepresentable && newRows[newItemPosition] is HeaderRowRepresentable) { |
||||||
|
val header1 = oldRows[oldItemPosition] as HeaderRowRepresentable |
||||||
|
val header2 = newRows[newItemPosition] as HeaderRowRepresentable |
||||||
|
return header1.title == header2.title |
||||||
|
} |
||||||
|
|
||||||
|
return false |
||||||
|
} |
||||||
|
|
||||||
|
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { |
||||||
|
// Force to update all the rows that were already there |
||||||
|
|
||||||
|
if (oldRows[oldItemPosition] is Session && newRows[newItemPosition] is Session) { |
||||||
|
val session1 = oldRows[oldItemPosition] as Session |
||||||
|
val session2 = newRows[newItemPosition] as Session |
||||||
|
|
||||||
|
return false //session1.id == session2.id |
||||||
|
|
||||||
|
} else if (oldRows[oldItemPosition] is HeaderRowRepresentable && newRows[newItemPosition] is HeaderRowRepresentable) { |
||||||
|
val header1 = oldRows[oldItemPosition] as HeaderRowRepresentable |
||||||
|
val header2 = newRows[newItemPosition] as HeaderRowRepresentable |
||||||
|
return header1.title == header2.title |
||||||
|
} |
||||||
|
|
||||||
|
return false |
||||||
|
} |
||||||
|
|
||||||
|
@Nullable |
||||||
|
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? { |
||||||
|
//you can return particular field for changed item. |
||||||
|
return super.getChangePayload(oldItemPosition, newItemPosition) |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="vertical"> |
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView |
||||||
|
android:id="@+id/sessionHeaderTitle" |
||||||
|
style="@style/PokerAnalyticsTheme.TextView.SessionHeader" |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginStart="16dp" |
||||||
|
android:layout_marginTop="16dp" |
||||||
|
tools:text="Header" /> |
||||||
|
|
||||||
|
</LinearLayout> |
||||||
Loading…
Reference in new issue