Für RecyclerView, müssen Sie Ihre eigene ViewHolder Klasse, die alle Ansichten aufgelistet innerhalb animal_ticket
hat.
Grundsätzlich funktioniert es wie folgt aus:
1) ViewHolder erstellen, dass alle Ansichten des Elements ‚hält‘ Sie anzeigen möchten;
2) Binden Sie den ViewHolder an die RecyclerView und weisen Sie den Ansichten Werte zu;
Hier ein Beispiel Adapter schrieb ich:
class MyActivity : Activity() {
//users is the list we're going to use to get information for the views
val users = ArrayList<User>()
//...getting user information
//.. your activity stuff here
//Creating our adapter
/*
Note that to extend the RecyclerView.Adapter, you need to specify a
ViewHolder. The code becomes much easier to manage if you just put the
ViewHolder inside your adapter.
*/
inner class MyAdapter : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
//This is the view holder
inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
//Here you declare your views and get them from the itemView
//The itemView is one that is passed each time to the RecyclerView
//(the items inside your XML layout file)
internal val userImageView = itemView.findViewById(R.id.userImage)
internal val userFullName = itemView.findViewById(R.id.userName)
}
//This is where you return your own ViewHolder with your layout
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
//user_list_item.xml is below
val itemView = layoutInflater.inflate(R.layout.user_list_item, parent, false))
return MyViewHolder(itemView)
}
//In here is where you want to set your values for the views
override fun onBindViewHolder(holder: SentRequestViewHolder, position: Int) {
val currentUser = users[position]
holder.userImage.drawable = currentUser.drawable
holder.userFullName.text = currentUser.name
}
//You must override this method as well for the adapter to work properly
override fun getItemCount() = users.size
}
Sie müssen diese Methoden außer Kraft setzen, wenn ein RecyclerView.Adapter
Hier ist die user_list_item.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp">
<ImageView
android:id="@+id/userImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/userName"
android:layout_below="@id/userImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
Guter Rat mit, aber da die Frage 'override fun getView' verwendet, verwendet OP wahrscheinlich 'ListView' /' Adapter' und nicht 'RecyclerView' /' RecyclerView.Adapter'. – ephemient