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