我是Android开发人员的新手,我遇到了麻烦...... 我试图在我的活动类中获得对recyclerview的引用,并且由于某种原因它返回null?我在onCreate中调用了findViewById函数。我已经在某些地方读过,这是为了尽早调用,因为还没有创建recyclelerview,我应该使用onCreated。但是当我使用onCreated函数时,我得到一个错误,指出它没有覆盖任何东西。
我正在使用Kotlin,所以我尝试过使用和不使用null运算符(?) 但是我仍然得到同样的错误?有没有办法解决?我正在使用min SDK版本21,并且目标是ADK版本27(不确定是否需要它?)
谢谢你的时间!
活动类
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recycler_list)
Application.component.inject(this)
viewModel = itemListViewModel(this, authService, itemService)
var response = viewModel.getItemsList()
itemList = response?.itemList!!
setupRecyclerView()
}
fun setupRecyclerView(){
var recyclerview = findViewById<RecyclerView>(R.id.item_list)
var recyclerAdaptor = VenueListAdaptor(this, itemList)
recyclerview.adapter = recyclerAdaptor
var verticalManager = LinearLayoutManager(this)
verticalManager.orientation = LinearLayoutManager.VERTICAL
recyclerview.layoutManager = verticalManager
recyclerview.itemAnimator = DefaultItemAnimator()
}
** XML Layout **
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/item_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent">
</android.support.v7.widget.RecyclerView>
</android.support.constraint.ConstraintLayout>
**适配器类**
class ItemListAdaptor (context: Context, itemList: ArrayList<Item>) : RecyclerView.Adapter<ItemListAdaptor.ItemListViewHolder>() {
val itemList = itemList
val layoutInflator = LayoutInflater.from(context)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemListViewHolder {
val view = layoutInflator.inflate(R.layout.item_layout, parent, false)
val viewholder = ItemListViewHolder(view)
return viewholder
}
override fun getItemCount(): Int {
return itemList.size
}
override fun onBindViewHolder(holder: itemListViewHolder, position: Int) {
val data = itemList.get(position)
holder.setData(data, position)
}
class ItemListViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView)
{
lateinit var itemName: TextView
lateinit var item: Item
init{
if(itemView != null){
// find item and set data here
}
}
fun setData(item: Item, position : Int){
//set item data here
}
}
}
答案 0 :(得分:0)
在setupRecyclerView
setContentView
方法