无法完成刷新条目的计划请求.ClientErrorCode:3 Android Kotlin

CRe*_*Rey 6 android kotlin

让我直截了当地说明logcat中的错误是:

Could not complete scheduled request to refresh entries. ClientErrorCode: 3
Run Code Online (Sandbox Code Playgroud)

我测试了代码的Realm()部分并获取了正确的数据.基本上,应用程序只是在加载该Activity时崩溃.我现在尝试做的就是在每个单元格中发布itemName.如果你们需要logcat,就这么说吧我会发布它.还需要任何其他细节.

这是我的Activity的代码,每个单元格中只有一个ImageView和一个TextView的recyclerView:

class EssentialsActivity : AppCompatActivity() {

    var category: String? = null
    val realmtypeFunctions = RealmTypeFunctions()
    var realmResults: RealmResults<ChattRItem>? = null
    var chattRItemList = mutableListOf<ChattRItem>()

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

        //init realm
        Realm.init(this)

        category = "People"

        recyclerView_Essentials.setBackgroundColor(Color.CYAN)
        recyclerView_Essentials.layoutManager = GridLayoutManager(this, 3)
//        AsyncTask.execute {
            category?.let {
                loadFromRealm(it)
            }
//        }
        this.runOnUiThread {
            recyclerView_Essentials.adapter = EssentialsAdapter(chattRItemList)
        }
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        val inflater = menuInflater
        inflater.inflate(R.menu.categories, menu )

        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        val intent: Intent?
        intent = Intent(this, AddItemActivity::class.java)
        intent.putExtra("category", category)
        startActivity(intent)


//        when (item?.itemId) {
//            R.id.essentials_menu_item -> {
//                intent = Intent(this, EssentialsActivity::class.java)
//                startActivity(intent)
//            }
//            R.id.addItem_menu_item -> {
//                intent = Intent(this, AddItemActivity::class.java)
//                startActivity(intent)
//            }
//            else -> return false
//        }

        return super.onOptionsItemSelected(item)
    }

    private fun loadFromRealm(category: String){
        val realm = Realm.getDefaultInstance()
        try {
            val query: RealmQuery<ChattRItem>? = realm.where(ChattRItem::class.java).equalTo("itemCategory", category)
            val result: RealmResults<ChattRItem>? = query?.findAll()
            result?.let {
                for (i in it) {
                    println(i.itemName)
                    chattRItemList.add(i)
                }
                println(chattRItemList.count())
            }

        } finally {
            realm.close()
        }
    }
}

class EssentialsAdapter(private val chattRItemList: List<ChattRItem>): RecyclerView.Adapter<CustomViewHolder>(){

    //realm class variable here to be displayed
    /* var essentials = array of realm essential item */
//    var essentialsActivity = EssentialsActivity()

    //number of items
    override fun getItemCount(): Int {
//        return 12 //return realm items count
        return this.chattRItemList.size
    }

    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {

//        holder.itemView.textView_essentials_name.text = "Essentials Item"

        val chattRItem = chattRItemList.get(position)
//        holder.itemView.textView_essentials_name.text = chattRItem.itemName
        holder.bind(chattRItem)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder{
        // how do we create a cell view
        val layoutInflater = LayoutInflater.from(parent.context)
        val cellForRow = layoutInflater.inflate(R.layout.essentials_cells_layout, parent, false)
        return CustomViewHolder(view = cellForRow)
    }

}

class CustomViewHolder(view: View): RecyclerView.ViewHolder(view) {
    fun bind(chattRitem: ChattRItem) {
        itemView.textView_essentials_name.text = chattRitem.itemName
    }
}
Run Code Online (Sandbox Code Playgroud)

CRe*_*Rey 3

所以基本上我想通了。这不是来自 LogCat 的正确错误。Logcat 在此之上的许多行中还出现了另一组错误。错误是结果列表是 @Realm 对象。我的 recyclerView 要求一个非 RealmClass 对象。所以我必须制作一个类似的对象,但不是 RealmClass。

@RealmClass
open class ChattRItem: RealmModel {
    @PrimaryKey var itemId: String = ""
    var itemName: String = ""
    var itemCategory: String = ""
    var itemImageFileName: String = ""
    var itemAudioFileName: String = ""
}

class ChattRBoxItems(val itemId: String, val itemName: String, val itemCategory: String, val itemImageFileName: String, val itemAudioFileName: String)
Run Code Online (Sandbox Code Playgroud)

然后我将结果映射到这个新类中,然后将其应用到我的 recyclerView 中。

  • Logcat打印时滚动浏览很烦人,但答案是正确的。导致崩溃的错误位于 Logcat 输出的更上方。 (2认同)