반응형
https://billcorea.tistory.com/381
이전 글에서 말했던 페이지 처리의 오류가 발견되었습니다 ㅋ~ 사유는 데이터의 개수가 페이징을 할 수 있는 기본 건수보다 작은 경우 오류가 발생하는 것을 확인하게 되었습니다.
조치
페이지 처리의 클래스를 수정 하였습니다.
class ListViewSource(pContext : Context) : PagingSource<Int, ViewReceiveList>() {
val context = pContext
override fun getRefreshKey(state: PagingState<Int, ViewReceiveList>): Int? {
return state.anchorPosition
}
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, ViewReceiveList> {
return try {
val nextPage = params.key ?: 1
val viewList = dataReadPage(nextPage, params.loadSize)
val loadOver = params.loadSize < viewList.size // 페이지 건수 보다 많은 데이터가 있나 ?
LoadResult.Page(
data = viewList,
prevKey = if (nextPage == 1) null else viewList[0].id.toInt(),
nextKey = if (viewList.isEmpty()) null
else if (!loadOver) null // 데이터 건수가 작은 경우는 다음 페이지는 없기 떄문에
else viewList[viewList.size - 1].id.toInt()
)
} catch (e : IOException) {
return LoadResult.Error(e)
}
}
@SuppressLint("Range")
private fun dataReadPage(nextPage: Int, loadSize: Int): List<ViewReceiveList> {
val returnList = ArrayList<ViewReceiveList>()
val dbHandler = DBHandler.open(context)
Log.e("", "readKey=$nextPage")
val rs = dbHandler.selectRcvList(nextPage, loadSize)
returnList.clear()
while (rs.moveToNext()) {
val viewRevList = ViewReceiveList()
viewRevList.id = rs.getString(rs.getColumnIndex("_id"))
viewRevList.strBody = rs.getString(rs.getColumnIndex("strBody"))
viewRevList.chkValue = rs.getString(rs.getColumnIndex("chkValue"))
viewRevList.regDate= rs.getString(rs.getColumnIndex("regDate"))
viewRevList.eventID = rs.getString(rs.getColumnIndex("eventID"))
viewRevList.inPhoneNumber = rs.getString(rs.getColumnIndex("inPhoneNumber"))
viewRevList.kakaoProfileImage = rs.getString(rs.getColumnIndex("kakao_profile_image"))
returnList.add(viewRevList)
}
dbHandler.close()
return returnList
}
}
이런 것 수정하는 방법으로 데이터 표기가 되고 있는 것을 확인하게 되었습니다. 앱 사용에 불편을 드려 죄송합니다.
ㅠㅠ;;
p.s : 2024.03.20 ~~~ 이제 서야 알게된 사실은 ... 이 방법으로는 1페이지이 데이터만 나오고 그 다음은 나오지 않고 있다는 사실을 알게 되었습니다. ㅠㅠ;; 이후 정리가 되면 다시 게시글로 정리를 해 보겠습니다.
반응형
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : PermittedSubclasses requires ASM9 가 나오고 있네요... (132) | 2023.11.24 |
---|---|
안드로이드 앱 만들기 : PDF 열어보기 (인터넷펌) (62) | 2023.11.07 |
안드로이드 앱 만들기 studio 에도 bot 바람이??? (4) | 2023.09.24 |
안드로이드 앱 만들기 : Layout 만들기 xml vs jetpack compose 장.단점 비교해 보기 (6) | 2023.09.22 |
안드로이드 앱 만들기 : RecyclerView 에 대한 review (feat ChatGPT-3.5) (116) | 2023.09.21 |