首页 > 解决方案 > Android kotlin:我已从 url 成功检索数据,我想将这些数据存储到房间数据库类别中

问题描述

我想存储名称、价格、图片和产品 ID、类别 ID

模型类

@Entity(tableName = "productlisttable")
data class ProductList_Data(
@PrimaryKey
val uid: Int = 0,

@ColumnInfo(name = "_name")
var name: String? = "",

@ColumnInfo(name = "_price")
var price: String? = ""
)

@Dao
interface ProductListDao {
@Query("SELECT * FROM productlisttable")
fun getAll(): List<ProductList_Data>

@Insert
fun insert(productListData: ProductList_Data)
}

应用数据库

@Database(entities = arrayOf(ProductList_Data::class), version = 1)
abstract class ProductlistAppDatabase: RoomDatabase() {
abstract fun productListDao(): ProductListDao
}

这是产品列表活动

class ProductListActivity : AppCompatActivity() {
private val TAG = ProductListActivity::class.java.simpleName
lateinit var imageView: ImageView
lateinit var iVwishls: ImageView
lateinit var iVCart: ImageView
lateinit var productlistAdapter: ProductlistAdapter

lateinit var viewModelJob: Job
lateinit var coroutineScope: CoroutineScope
lateinit var data: String
lateinit var catId: String

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_product_list)

    viewModelJob = Job()
    coroutineScope = CoroutineScope(viewModelJob + Dispatchers.Default)

    catId = intent.getStringExtra("cat_id").toString()

    imageView = findViewById(R.id.imageViewBackFromPluductlist)
    iVwishls = findViewById(R.id.imageViewWishls)
    iVCart = findViewById(R.id.imageViewCart)

    iVwishls.setOnClickListener {
        startActivity(
            Intent(
                applicationContext,
                WishlistActivity::class.java
            )
        )
    }

    iVCart.setOnClickListener {
        startActivity(
            Intent(
                applicationContext,
                CartActivity::class.java
            )
        )
    }

    imageView.setOnClickListener { onBackPressed() }

    getProductList()
    getFromRoom()

}

private fun getFromRoom() {
    val db = Room
        .databaseBuilder(
            applicationContext,
            ProductlistAppDatabase::class.java,
            "productlistDB"
        )
        .build()

}

private fun getProductList() {
    coroutineScope.launch {
        val response =
            ServiceApi.retrofitService.getProductList(Rare.getProductList(catId))
        if (response.isSuccessful) {
            val model = response.body()
            productlistAdapter = ProductlistAdapter(this@ProductListActivity, model)
            withContext(Dispatchers.Main) {
                recyclerviewPlist.layoutManager = LinearLayoutManager(this@ProductListActivity)
                recyclerviewPlist.adapter = productlistAdapter
            }
        } else {
            Log.d(TAG, "getProductList: error")
        }
    }

    val db = Room
        .databaseBuilder(
            applicationContext,
            ProductlistAppDatabase::class.java,
            "productlistDB"
        )
        .build()

    val data = ProductList_Data(1, "firsrproduct", "100")
    db.productListDao().insert(data)

 }

}

这是实际应用程序的屏幕截图/如您所见,我能够像这样从服务器获取数据...

在此处输入图像描述

所以我应该改变或添加什么我试图定义房间 db 而所有那些 bt 完全失败了

标签: androidandroid-studiokotlinandroid-roomlocal-database

解决方案


推荐阅读