Paginator 클래스 - Android

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기11분
  • Paginator 클래스는 NowTableService 클래스에서 반환되는 것과 같이 REST 끝점 호출에 의해 다시 전달된 반환 결과를 페이징하기 위한 함수를 제공합니다.

    먼저 or NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 함수를 호출하여 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) 반환 결과를 페이지 매김해야 합니다.

    Paginator - 첫 번째()

    반환 결과의 첫 페이지를 가져옵니다.

    이 메서드는 첫 번째 페이지를 가져올 수 없는 경우 PaginationError 를 발생시킵니다.

    표 1. 매개변수
    이름 유형 설명
    없음
    표 2. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      paginator.first()
    }

    페이지네이터 - hasNext()

    반환 결과에 다음 페이지가 있는지 확인합니다.

    표 3. 매개변수
    이름 유형 설명
    없음
    표 4. 반환
    유형 설명
    부울 반환 결과에 다음 페이지가 있는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 다음 페이지를 사용할 수 있습니다.
    • false: 사용할 수 있는 다음 페이지가 없습니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      if (paginator.hasNext() && !paginator.isBusy()) {
        paginator.next()
      }
    }

    페이지 매김기 - hasPrevious()

    반환 결과에 이전 페이지에 있는지 확인합니다.

    표 5. 매개변수
    이름 유형 설명
    없음
    표 6. 반환
    유형 설명
    부울 반환 결과에 이전 페이지가 있는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 이전 페이지를 사용할 수 있습니다.
    • false: 사용할 수 있는 이전 페이지가 없습니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      if (paginator.hasPrevious() && !paginator.isBusy()) {
        paginator.previous()
      }
    }

    페이지 매김기 - isBusy()

    Paginator가 데이터를 가져오는 중인지 확인합니다.

    표 7. 매개변수
    이름 유형 설명
    없음
    표 8. 반환
    유형 설명
    없음 Paginator가 데이터를 가져오는 중인지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 데이터를 가져오는 중입니다.
    • false: 사용 중이 아닙니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      if (paginator.hasNext() && !paginator.isBusy()) {
        paginator.next()
      }
    }

    페이지네이터 - last()

    반환 결과의 마지막 페이지를 가져옵니다.

    이 메서드는 마지막 페이지를 가져올 수 없는 경우 PaginationError 를 발생시킵니다.

    표 9. 매개변수
    이름 유형 설명
    없음
    표 10. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      if !paginator.isBusy()) {
        paginator.last()
      }
    }

    페이지네이터 - next()

    반환 결과의 다음 페이지를 가져옵니다.

    이 메서드는 가져올 페이지가 더 이상 없는 경우 PaginationError 를 발생시킵니다.

    표 11. 매개변수
    이름 유형 설명
    없음
    표 12. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      if (paginator.hasNext() && !paginator.isBusy()) {
        paginator.next()
      }
    }

    Paginator - observe(콜백: PaginatorCallBack<T>)

    Paginator 객체의 콜백을 설정합니다. 다른 Paginator 함수를 호출하기 전에 이 메서드를 호출해야 합니다.

    표 13. 매개변수
    이름 유형 설명
    콜백 PaginatorCallBack Paginator 생성의 성공 또는 실패에 따라 호출을 콜백합니다.
    • 성공: 추상적인 재미 onSuccess(response: Response<List<T>>)
    • 실패: 추상 재미 onFailure(e: NowDataError)
    표 14. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginationCallBack = object : PaginatorCallBack<NowAttachmentMetadata> {
        override fun onFailure(e: NowDataError) {
          handleError(e)
        }
    
        override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
          handleResponse(response)
        }
    
      }
    
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(paginationCallBack)
        ?: throw Exception("Response is null")
    }

    Paginator - 이전()

    반환 결과의 이전 페이지를 가져옵니다.

    이 메서드는 이전 페이지를 가져올 수 없는 경우 PaginationError 를 발생시킵니다.

    표 15. 매개변수
    이름 유형 설명
    없음
    표 16. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      if (paginator.hasPrevious() && !paginator.isBusy()) {
        paginator.previous()
      }
    }

    Paginator - reset()

    Paginator를 첫 번째 페이지로 다시 설정하지만 반환 결과의 첫 번째 페이지는 반환하지 않습니다.

    표 17. 매개변수
    이름 유형 설명
    없음
    표 18. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    suspend fun createAttachmentMetadataPaginator() {
      val paginator = nowServiceManager.getNowAttachmentService()?.attachmentMetadataPaginator(null, 10)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onFailure(e: NowDataError) {
            handleError(e)
          }
    
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            handleResponse(response)
          }
    
        })
        ?: throw Exception("Response is null")
    
      paginator.reset()
    }