无法在Android中为创建调用适配器

u59ebvdq  于 2023-02-06  发布在  Android
关注(0)|答案(1)|浏览(168)

我试图在我的应用程序中获取客户端列表。我做了Ktor后端,并把客户端那里。我使用Retrofit获取和DI的Hilt。
在我的安卓应用程序中,我制作了API:

@GET("/clients")
fun getAllClients(): List<Client>

在客户端列表报告实现中:

override fun getAllClients(): List<Client> {
        return clientTrackerApi.getAllClients()
    }

在ViewModel I中调用接口clientRepository:

init {
        viewModelScope.launch {
            val clients = clientsRepository.getAllClients() 
        }
    }

在列表屏幕中:

val viewModel = hiltViewModel<ClientListViewModel>()
val myContext = LocalContext.current
LaunchedEffect(key1 = myContext) {
    viewModel.viewModelScope.launch {
        Log.d(TAG, "ClientsListScreen:")
    }
}

我还得到了这个错误:
java. lang.非法参数异常:无法为java.util.List创建调用适配器〈android.tvz.hr.clienttracker. data. domain. model.客户端
我检查了ktor正在返回客户端,例如1个客户端:

[

    {
        "id": 1,
        "name": "Ronnie",
        "age": 23,
        "picture": "content://com.android.providers.media.documents/document/image%3A18",
        "aboutUser": "something"
    }

]

编辑:
客户端模型:

data class Client(
    val id: Int,
    val name: String,
    val age: Int,
    val picture: String? = null,
    val aboutUser: String? = null,
)

我正在尝试从我的后端获取客户端列表,以便在编写中的LazyList中显示它。

7gcisfzg

7gcisfzg1#

你要么让getAllClients()函数挂起,要么返回Call〈List〉。第二个方法会让你的代码看起来像这样:

val call = clientsRepository.getAllClients()
call.enqueue(object: Callback<PlacesFoo>() {
      
      override fun onResponse(Call<List<Client>> call, 
                             Response<List<Client>>response) {
        
      }
      
      override fun onFailure(Call<List<Client>> call, Throwable t) {
        
      }
    })

也使用自动完成由android工作室不要复制粘贴这一点,可能会有一个错误。

相关问题