如何使用recyclerview解决“预期成员声明”

时间:2019-09-11 11:13:43

标签: android kotlin

我创建了一个RecyclerView,但是当我尝试向视图分配layoutManager时,得到了无处不在的“期望成员声明”。我正在使用androidx

此错误似乎还有许多其他问题,但是我无法根据自己的问题来调整解决方案。

我没有高兴地尝试过Build -> Clean方法。 我尝试为lateinit申请recyclerview

import android.content.Context
//import android.support.v7.app.AppCompatActivity;

import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity
import androidx.room.Room


import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    private val DB_NAME = "Flt_Log.db"

    //lateinit var recyclerView: RecyclerView


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

    var recyclerView = findViewById<RecyclerView>(R.id.rv_flightlist)

    recyclerView.layoutManager = LinearLayoutManager(this)

...

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_flightlist"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
        //tools:layout_editor_absoluteX="145dp"
        //tools:layout_editor_absoluteY="494dp"
</android.support.constraint.ConstraintLayout>
  

存在错误:recyclerView.layoutManager = LinearLayoutManager(this)

2 个答案:

答案 0 :(得分:1)

您的代码中有两个错误

您需要在findViewById方法内进行 onCreate()

recyclerView.layoutManager = LinearLayoutManager(this)方法内使用onCreate()

也无需执行findViewById,您可以使用Kotlin Android Extensions

尝试一下

class MainActivity : AppCompatActivity() {

    private val DB_NAME = "Flt_Log.db"

    //lateinit var recyclerView: RecyclerView


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
            var recyclerView = findViewById<RecyclerView>(R.id.rv_flightlist)

    recyclerView.layoutManager = LinearLayoutManager(this)
    }
}

答案 1 :(得分:1)

转换

val recyclerView = findViewById<RecyclerView>(R.id.rv_flightlist)

val recyclerView : RecylerView = findViewById<RecyclerView>(R.id.rv_flightlist)

您还可以使用Kotlin Android Extensions并直接访问回收站视图,因为所有繁重的工作都已为您完成。

rv_flightlist.layoutmanager = LinearLayoutManager(this)