This commit is contained in:
Mariotaku Lee 2017-09-15 15:32:20 +08:00
parent fee338157e
commit 8db45fef5d
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
3 changed files with 25 additions and 5 deletions

View File

@ -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

View File

@ -426,7 +426,7 @@ abstract class AbsStatusesFragment : AbsContentListRecyclerViewFragment<Parcelab
}
override fun onStatusClick(holder: IStatusViewHolder, position: Int) {
val status = adapter.getStatus(position)
val status = getFullStatus(position) ?: return
IntentUtils.openStatus(activity, status, null)
}
@ -502,6 +502,10 @@ abstract class AbsStatusesFragment : AbsContentListRecyclerViewFragment<Parcelab
}
}
protected open fun getFullStatus(position: Int): ParcelableStatus? {
return adapter.getStatus(position)
}
protected abstract fun hasMoreData(loader: Loader<List<ParcelableStatus>?>,
data: List<ParcelableStatus>?): Boolean

View File

@ -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)