From 7f87db3d4bed1b1977aca2d613e8c7622047ac55 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 24 Jun 2019 16:28:40 -0300 Subject: [PATCH 1/3] added recycler view / adapter / item removed list view --- .idea/codeStyles/codeStyleConfig.xml | 2 +- .../android/notekeeper/ListActivity.kt | 32 ++++---- .../android/notekeeper/NoteKeeperData.kt | 6 +- .../example/android/notekeeper/adp/NoteAdp.kt | 48 ++++++++++++ app/src/main/res/layout/content_list.xml | 35 ++++----- app/src/main/res/layout/item_note.xml | 73 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 6 ++ 8 files changed, 165 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt create mode 100644 app/src/main/res/layout/item_note.xml diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml index 79ee123..a55e7a1 100644 --- a/.idea/codeStyles/codeStyleConfig.xml +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -1,5 +1,5 @@ - \ No newline at end of file diff --git a/app/src/main/java/com/example/android/notekeeper/ListActivity.kt b/app/src/main/java/com/example/android/notekeeper/ListActivity.kt index 46efef0..8486bc7 100644 --- a/app/src/main/java/com/example/android/notekeeper/ListActivity.kt +++ b/app/src/main/java/com/example/android/notekeeper/ListActivity.kt @@ -3,36 +3,36 @@ package com.example.android.notekeeper import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.widget.ArrayAdapter +import android.support.v7.widget.DividerItemDecoration +import android.support.v7.widget.LinearLayoutManager +import com.example.android.notekeeper.adp.NoteAdp import kotlinx.android.synthetic.main.activity_list.* import kotlinx.android.synthetic.main.content_list.* -class ListActivity : AppCompatActivity() { +class ListActivity : AppCompatActivity(), NoteAdp.Listener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_list) setSupportActionBar(toolbar) - fab.setOnClickListener { view -> - val intent = Intent(this, MainActivity::class.java) + fab.setOnClickListener { openNewActivity(null) } - startActivity(intent) + listOfNotes.apply { + layoutManager = LinearLayoutManager(context) + addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.HORIZONTAL)) } - listOfNotes.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, DataManager.notes) - - listOfNotes.setOnItemClickListener { parent, view, position, id -> - val intent = Intent(this, MainActivity::class.java) - - intent.putExtra(NOTE_POSITION, position) + listOfNotes.adapter = NoteAdp(DataManager.notes, this, this) + } - startActivity(intent) - } + override fun onItemClicked(adapterPosition: Int) { + openNewActivity(adapterPosition) } - override fun onResume() { - super.onResume() - (listOfNotes.adapter as ArrayAdapter).notifyDataSetChanged() + private fun openNewActivity(adpPosition: Int?) { + val intent = Intent(this, MainActivity::class.java) + adpPosition?.run { intent.putExtra(NOTE_POSITION, adpPosition) } + startActivity(intent) } } diff --git a/app/src/main/java/com/example/android/notekeeper/NoteKeeperData.kt b/app/src/main/java/com/example/android/notekeeper/NoteKeeperData.kt index 042bb36..50058ae 100644 --- a/app/src/main/java/com/example/android/notekeeper/NoteKeeperData.kt +++ b/app/src/main/java/com/example/android/notekeeper/NoteKeeperData.kt @@ -1,9 +1,5 @@ package com.example.android.notekeeper -data class CourseInfo (val courseId: String, val title: String) { - override fun toString(): String { - return title - } -} +data class CourseInfo(val courseId: String, val title: String) data class NoteInfo (var course: CourseInfo? = null, var title: String? = null, var text: String? = null) \ No newline at end of file diff --git a/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt b/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt new file mode 100644 index 0000000..f1572fd --- /dev/null +++ b/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt @@ -0,0 +1,48 @@ +package com.example.android.notekeeper.adp + +import android.content.Context +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.android.notekeeper.NoteInfo +import com.example.android.notekeeper.R +import kotlinx.android.synthetic.main.item_note.view.* + +class NoteAdp(private val noteInfoList: List, private val context: Context, private val listener: Listener) : + RecyclerView.Adapter() { + + interface Listener { + fun onItemClicked(adapterPosition: Int) + } + + override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + val layout = inflater.inflate(R.layout.item_note, parent, false) + + return ViewHolder(layout, listener) + } + + override fun onBindViewHolder(holder: ViewHolder, positionItem: Int) { + holder.bindView(noteInfoList[positionItem], context) + } + + override fun getItemCount(): Int = noteInfoList.size + + + class ViewHolder(private val view: View, listener: Listener) : RecyclerView.ViewHolder(view) { + + init { + view.setOnClickListener { listener.onItemClicked(adapterPosition) } + } + + fun bindView(noteInfo: NoteInfo, context: Context) { + view.item_note_info.text = context.getText(R.string.note) + view.item_note_course.text = noteInfo.course?.title + view.item_note_title.text = noteInfo.title + view.item_note_text.text = noteInfo.text + } + + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/content_list.xml b/app/src/main/res/layout/content_list.xml index 3a58861..8b6f2f2 100644 --- a/app/src/main/res/layout/content_list.xml +++ b/app/src/main/res/layout/content_list.xml @@ -1,20 +1,21 @@ - + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/item_note.xml b/app/src/main/res/layout/item_note.xml new file mode 100644 index 0000000..fb0416d --- /dev/null +++ b/app/src/main/res/layout/item_note.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ac0d40..64c2dd4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,4 +2,6 @@ Edit note Settings Note Keeper + + Note Info: diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 16dbab3..8a75869 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -14,4 +14,10 @@ + From 66481a487d143a68de2d3d873bd7105ccbe39db2 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 1 Jul 2019 14:14:26 -0300 Subject: [PATCH 2/3] changed layout from constraint to linear layout --- app/src/main/res/layout/item_note.xml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/layout/item_note.xml b/app/src/main/res/layout/item_note.xml index fb0416d..db713d1 100644 --- a/app/src/main/res/layout/item_note.xml +++ b/app/src/main/res/layout/item_note.xml @@ -11,14 +11,15 @@ app:cardCornerRadius="8dp" app:strokeWidth="1dp"> - + android:layout_height="match_parent" + android:orientation="vertical"> - + \ No newline at end of file From 39a27b6866c1e25f686562e3bd73ac88851a8e70 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 1 Jul 2019 14:19:05 -0300 Subject: [PATCH 3/3] using recycler view item context --- .../main/java/com/example/android/notekeeper/ListActivity.kt | 2 +- .../main/java/com/example/android/notekeeper/adp/NoteAdp.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/example/android/notekeeper/ListActivity.kt b/app/src/main/java/com/example/android/notekeeper/ListActivity.kt index 8486bc7..444cd27 100644 --- a/app/src/main/java/com/example/android/notekeeper/ListActivity.kt +++ b/app/src/main/java/com/example/android/notekeeper/ListActivity.kt @@ -23,7 +23,7 @@ class ListActivity : AppCompatActivity(), NoteAdp.Listener { addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.HORIZONTAL)) } - listOfNotes.adapter = NoteAdp(DataManager.notes, this, this) + listOfNotes.adapter = NoteAdp(DataManager.notes, this) } override fun onItemClicked(adapterPosition: Int) { diff --git a/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt b/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt index f1572fd..88a7cff 100644 --- a/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt +++ b/app/src/main/java/com/example/android/notekeeper/adp/NoteAdp.kt @@ -9,7 +9,7 @@ import com.example.android.notekeeper.NoteInfo import com.example.android.notekeeper.R import kotlinx.android.synthetic.main.item_note.view.* -class NoteAdp(private val noteInfoList: List, private val context: Context, private val listener: Listener) : +class NoteAdp(private val noteInfoList: List, private val listener: Listener) : RecyclerView.Adapter() { interface Listener { @@ -24,7 +24,7 @@ class NoteAdp(private val noteInfoList: List, private val context: Con } override fun onBindViewHolder(holder: ViewHolder, positionItem: Int) { - holder.bindView(noteInfoList[positionItem], context) + holder.bindView(noteInfoList[positionItem], holder.itemView.context) } override fun getItemCount(): Int = noteInfoList.size