Skip to content

Commit 38f6e65

Browse files
committed
SOC on the NoteRecyclerAdapter
1 parent c747de1 commit 38f6e65

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

app/src/main/java/com/appleobject/notekeeper/NoteListActivity.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import kotlinx.android.synthetic.main.content_note_list.*
1111

1212
class NoteListActivity : AppCompatActivity() {
1313

14+
lateinit var noteRecyclerAdapter: NoteRecyclerAdapter
1415

1516
override fun onCreate(savedInstanceState: Bundle?) {
1617
super.onCreate(savedInstanceState)
@@ -22,11 +23,17 @@ class NoteListActivity : AppCompatActivity() {
2223
startActivity(activityIntent)
2324
}
2425

25-
listItems.layoutManager = LinearLayoutManager(this)
2626

27-
listItems.adapter = NoteRecyclerAdapter(this, DataManager.notes)
27+
initRecyclerView()
28+
}
2829

2930

31+
private fun initRecyclerView(){
32+
listItems.apply {
33+
layoutManager = LinearLayoutManager(this@NoteListActivity)
34+
noteRecyclerAdapter = NoteRecyclerAdapter(this.context, DataManager.notes)
35+
adapter = noteRecyclerAdapter
36+
}
3037
}
3138

3239
override fun onResume() {

app/src/main/java/com/appleobject/notekeeper/NoteRecyclerAdapter.kt

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,56 @@ package com.appleobject.notekeeper
22

33
import android.content.Context
44
import android.content.Intent
5+
import android.provider.ContactsContract
56
import android.view.LayoutInflater
67
import android.view.View
78
import android.view.ViewGroup
89
import android.widget.TextView
910
import androidx.recyclerview.widget.RecyclerView
1011
import com.appleobject.notekeeper.model.NoteInfo
1112

12-
class NoteRecyclerAdapter(private val context: Context, val notes : List<NoteInfo>)
13-
: RecyclerView.Adapter<NoteRecyclerAdapter.ViewHolder>() {
13+
class NoteRecyclerAdapter(private val context: Context, private var notes : List<NoteInfo>)
14+
: RecyclerView.Adapter<RecyclerView.ViewHolder>() {
1415

15-
private val layoutInflater = LayoutInflater.from(context)
1616

17-
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
18-
val textCourse = itemView.findViewById<TextView>(R.id.textCourse)
19-
val textTitle = itemView.findViewById<TextView>(R.id.textTitle)
17+
class NoteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
18+
private val textCourse: TextView = itemView.findViewById<TextView>(R.id.textCourse)
19+
private val textTitle: TextView = itemView.findViewById<TextView>(R.id.textTitle)
2020
var notePosition = 0
2121

2222
init{
2323
itemView.setOnClickListener {
24-
val intent = Intent(context, NoteActivity::class.java)
24+
val intent = Intent(it.context, NoteActivity::class.java)
2525
intent.putExtra(NOTE_POSITION, notePosition)
26-
context.startActivity(intent)
26+
it.context.startActivity(intent)
2727
}
2828

2929
}
3030

31+
// Bind the view to the collection
32+
fun bind(noteInfo: NoteInfo){
33+
textCourse.text = noteInfo.course?.title
34+
textTitle.text = noteInfo.title
35+
}
36+
3137
}
3238

33-
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
34-
val itemView = layoutInflater.inflate(R.layout.item_note_list, parent, false)
35-
return ViewHolder(itemView)
39+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
40+
return NoteViewHolder(
41+
LayoutInflater.from(parent.context).inflate(R.layout.item_note_list, parent, false)
42+
)
3643
}
3744

3845
override fun getItemCount() = notes.size
3946

40-
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
41-
val note = notes[position]
42-
holder.textCourse.text = note.course?.title
43-
holder.textTitle.text = note.title
44-
holder.notePosition = position
47+
48+
// We can have more than one ViewHolder
49+
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
50+
when(holder){
51+
is NoteViewHolder -> {
52+
holder.bind(notes[position])
53+
holder.notePosition = position
54+
}
55+
}
4556
}
4657
}

0 commit comments

Comments
 (0)