我对 Kotlin、Android 和 OOP 都很陌生(自然-ADABAS 背景,从未接触过 Java、C++ 等),所以我非常绝望。
我有一个 API,其数据如下所示,是一组书籍详细信息:
API数据样本
我对数据模型感到困惑。我知道它应该看起来像 API 中的数据并返回一个数组,但是我到底如何在 Kotlin 中对其进行编码呢?然后我该如何解析它?我读过一些教程,但它们都有所不同。有些使用对象,有些使用类。
我也可能通过将所有内容都放在主要活动中来打破一些标准,但我还没有到达那部分。
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
import retrofit2.http.GET
import retrofit2.http.Query
class MainActivity : AppCompatActivity()
{
private val api: RestAPI = RestAPI()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val apiGetBooks = api.getBooksList("token123123123")
val response = apiGetBooks.execute()
if (response.isSuccessful) {
val books = response.body()?.title
println(books)
} else {
println("error on API") // What do I do?
}
}
object Model …
Run Code Online (Sandbox Code Playgroud) 我通常使用以下命令运行我的应用程序,同时通过 USB 调试连接我的物理设备。
npx 博览会运行:android
但现在,我需要在仍然使用 Metro 捆绑程序的同时测试离线功能。我见过的大多数建议都被使用expo start --offline
,但我不使用 Expo Go,因为我有本机库。我尝试过expo start --dev-client --offline
,它成功构建了该应用程序,但当我在设备上切换到飞行模式时,它与 Metro 捆绑程序失去了连接。这尤其困难,因为我需要在离线模式下启动应用程序,但我无法这样做,因为它需要连接到开发服务器。
我能看到的唯一解决方法实际上是构建一个 apk,在离线模式下安装并打开它,但随后我无法调试,因为没有地铁。使用 EAS 进行构建需要很长时间。
有什么建议么?
有没有办法在 Jetpack Compose 中动态设置图标值?
示例,而不是:
Icon(Icons.Filled.Print, "print")
Run Code Online (Sandbox Code Playgroud)
我想做:
Icon(Icons.Filled.(iconValue), iconValueName)
Run Code Online (Sandbox Code Playgroud) 我是 kotlin 的新手,并试图将一个对象从我的适配器传递给一个片段。但是我在booklist
. 它说Required: Parceleable Found: List<ResourcesList>?
我也试过使用putParcelableArrayList
andputParcelableArray
和Serializable
但也有相同的类型不匹配。
我的数据模型如下所示:
@Parcelize
class ResourcesList (val id: Int,
val name: String,
val content: Contents,
val tags: List<Tags>) : Parcelable
@Parcelize
class Contents (val id: Int,
val producers: List<Producers>,
val categories: List<Categories>,
val isAvailable: Boolean): Parcelable
@Parcelize
class Producers (val name: String,
val role: String): Parcelable
@Parcelize
class Categories (val id: Int,
val name: String): Parcelable
Run Code Online (Sandbox Code Playgroud)
分段
class SeeAllFragment: Fragment() {
override fun onCreateView(inflater: LayoutInflater, …
Run Code Online (Sandbox Code Playgroud)