본문 바로가기
모바일 프로그래밍/안드로이드

RecyclerView Dummy Adapter

by 프러쉬 2019. 6. 10.

RecyclerView Adapter 시험 할 때 자주 사용하는 코드

class MyRecyclerViewAdapter internal constructor(context: Context, private val mData: List<String>) : RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>() {
private val mInflater: LayoutInflater
private var mClickListener: ItemClickListener? = null

init {
this.mInflater = LayoutInflater.from(context)
}

// inflates the row layout from xml when needed
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = mInflater.inflate(R.layout.recyclerview_row, parent, false)
return ViewHolder(view)
}

// binds the data to the TextView in each row
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val animal = mData[position]
holder.myTextView.text = animal
}

// total number of rows
override fun getItemCount(): Int {
return mData.size
}


// stores and recycles views as they are scrolled off screen
inner class ViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
internal var myTextView: TextView

init {
myTextView = itemView.findViewById(R.id.tvAnimalName)
itemView.setOnClickListener(this)
}

override fun onClick(view: View) {
if (mClickListener != null) mClickListener!!.onItemClick(view, adapterPosition)
}
}

// convenience method for getting data at click position
internal fun getItem(id: Int): String {
return mData[id]
}

// allows clicks events to be caught
internal fun setClickListener(itemClickListener: ItemClickListener) {
this.mClickListener = itemClickListener
}

// parent activity will implement this method to respond to click events
interface ItemClickListener {
fun onItemClick(view: View, position: Int)
}
}

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  android:padding="10dp">

  <TextView
    android:id="@+id/tvAnimalName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"/>

</LinearLayout>​

 

댓글