From 8db45fef5d435e002bdd70e60939f6ed6a019baf Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Fri, 15 Sep 2017 15:32:20 +0800 Subject: [PATCH] fixed #956 --- .../twidere/adapter/ParcelableStatusesAdapter.kt | 16 ++++++++++++---- .../twidere/fragment/AbsStatusesFragment.kt | 6 +++++- .../twidere/fragment/CursorStatusesFragment.kt | 8 ++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.kt index b2a92a1cf..894e36a70 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ParcelableStatusesAdapter.kt @@ -369,10 +369,6 @@ abstract class ParcelableStatusesAdapter( gapLoadingIds.remove(id) } - fun isStatus(position: Int, raw: Boolean = false): Boolean { - return position < getStatusCount(raw) - } - override fun getItemCount(): Int { return itemCounts.itemCount } @@ -386,6 +382,18 @@ abstract class ParcelableStatusesAdapter( return null } + fun isStatus(position: Int, raw: Boolean = false): Boolean { + return position < getStatusCount(raw) + } + + fun getRowId(adapterPosition: Int, raw: Boolean = false): Long { + return getFieldValue(adapterPosition, readInfoValueAction = { + it._id + }, readStatusValueAction = { status -> + status.hashCode().toLong() + }, defValue = -1L, raw = raw) + } + fun findPositionByPositionKey(positionKey: Long, raw: Boolean = false): Int { // Assume statuses are descend sorted by id, so break at first status with id // lesser equals than read position diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt index ff8a99faf..a3440bd6e 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt @@ -426,7 +426,7 @@ abstract class AbsStatusesFragment : AbsContentListRecyclerViewFragment?>, data: List?): Boolean diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CursorStatusesFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CursorStatusesFragment.kt index da3a7e750..ed717dea4 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CursorStatusesFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/CursorStatusesFragment.kt @@ -40,6 +40,7 @@ import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter.IndicatorPosition import org.mariotaku.twidere.annotation.FilterScope import org.mariotaku.twidere.constant.IntentConstants.EXTRA_FROM_USER +import org.mariotaku.twidere.extension.queryOne import org.mariotaku.twidere.loader.ExtendedObjectCursorLoader import org.mariotaku.twidere.model.ParameterizedExpression import org.mariotaku.twidere.model.ParcelableStatus @@ -208,6 +209,13 @@ abstract class CursorStatusesFragment : AbsStatusesFragment() { } } + override fun getFullStatus(position: Int): ParcelableStatus? { + val _id = adapter.getRowId(position) + val where = Expression.equals(Statuses._ID, _id).sql + return context.contentResolver.queryOne(contentUri, Statuses.COLUMNS, where, null, null, + ParcelableStatus::class.java) + } + protected fun getFiltersWhere(table: String): Expression? { if (!isFilterEnabled) return null return DataStoreUtils.buildStatusFilterWhereClause(preferences, table, null, filterScopes)