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>
'모바일 프로그래밍 > 안드로이드' 카테고리의 다른 글
Mockito Tutorial (0) | 2019.09.24 |
---|---|
FloatingActionButton Behavior (0) | 2019.06.14 |
Android FCM (0) | 2019.04.22 |
시스템 앱으로 설치하는 방법 (How to Install Android System App) (1) | 2019.04.17 |
드로이드 나이츠 영상 (0) | 2019.04.17 |
댓글