Я новичок в разработке для Android и столкнулся с проблемой ... Я пытаюсь получить ссылку на просмотрщик в своем классе активности, и он по какой-то причине возвращает ноль?Я вызываю функцию findViewById в onCreate.Я читал в некоторых местах, что это рано называть, так как просмотрщик еще не был создан, и я должен использовать onCreated.Однако, когда я использую функцию onCreated, я получаю сообщение о том, что она ничего не переопределяет.
Я использую Kotlin, поэтому я пробовал как с нулевым оператором, так и без него (?), Но все равно получаю ту же ошибку?Есть ли способ обойти это?Я использую мин 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
}
}
}