From f34ce020bb06cb5bf5a91ebf775b06321f56967b Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 8 Dec 2018 19:23:49 +0100 Subject: [PATCH] display the checklist items on the recycler view --- .../notes/pro/adapters/ChecklistAdapter.kt | 58 +++++++++++++++++++ .../notes/pro/fragments/ChecklistFragment.kt | 20 ++++++- .../notes/pro/models/ChecklistItem.kt | 2 +- app/src/main/res/layout/item_checklist.xml | 22 +++++++ 4 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt create mode 100644 app/src/main/res/layout/item_checklist.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt new file mode 100644 index 00000000..e3dc1e0b --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt @@ -0,0 +1,58 @@ +package com.simplemobiletools.notes.pro.adapters + +import android.view.Menu +import android.view.View +import android.view.ViewGroup +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener +import com.simplemobiletools.commons.views.MyRecyclerView +import com.simplemobiletools.notes.pro.R +import com.simplemobiletools.notes.pro.models.ChecklistItem +import kotlinx.android.synthetic.main.item_checklist.view.* +import java.util.* + +class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList, val listener: RefreshRecyclerViewListener?, + recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { + + init { + setupDragListener(true) + } + + override fun getActionMenuId() = R.menu.cab_delete_only + + override fun actionItemPressed(id: Int) {} + + override fun getSelectableItemCount() = items.size + + override fun getIsItemSelectable(position: Int) = true + + override fun getItemSelectionKey(position: Int) = items.getOrNull(position)?.id + + override fun getItemKeyPosition(key: Int) = items.indexOfFirst { it.id == key } + + override fun prepareActionMode(menu: Menu) {} + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_checklist, parent) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = items[position] + holder.bindView(item, true, true) { itemView, layoutPosition -> + setupView(itemView, item) + } + bindViewHolder(holder) + } + + override fun getItemCount() = items.size + + private fun setupView(view: View, checklistItem: ChecklistItem) { + val isSelected = selectedKeys.contains(checklistItem.id) + view.apply { + checklist_title.apply { + text = checklistItem.title + setTextColor(textColor) + } + checklist_holder.isSelected = isSelected + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt index 8aa2a7de..1e7b230c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt @@ -6,8 +6,10 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.activities.SimpleActivity +import com.simplemobiletools.notes.pro.adapters.ChecklistAdapter import com.simplemobiletools.notes.pro.dialogs.NewChecklistItemDialog import com.simplemobiletools.notes.pro.helpers.NOTE_ID import com.simplemobiletools.notes.pro.helpers.NotesHelper @@ -15,7 +17,7 @@ import com.simplemobiletools.notes.pro.models.ChecklistItem import com.simplemobiletools.notes.pro.models.Note import kotlinx.android.synthetic.main.fragment_checklist.view.* -class ChecklistFragment : NoteFragment() { +class ChecklistFragment : NoteFragment(), RefreshRecyclerViewListener { private var noteId = 0L private var note: Note? = null private var items = ArrayList() @@ -53,10 +55,24 @@ class ChecklistFragment : NoteFragment() { background.applyColorFilter(context!!.getAdjustedPrimaryColor()) setOnClickListener { NewChecklistItemDialog(activity as SimpleActivity) { - val checklistItem = ChecklistItem(it, false) + val currentMaxId = items.maxBy { it.id }?.id ?: 0 + val checklistItem = ChecklistItem(currentMaxId + 1, it, false) items.add(checklistItem) + setupAdapter() } } } + setupAdapter() + } + + private fun setupAdapter() { + ChecklistAdapter(activity as SimpleActivity, items, this, view.checklist_list) { + + }.apply { + view.checklist_list.adapter = this + } + } + + override fun refreshItems() { } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/ChecklistItem.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/ChecklistItem.kt index 14739f2f..e9c2f50e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/ChecklistItem.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/models/ChecklistItem.kt @@ -1,3 +1,3 @@ package com.simplemobiletools.notes.pro.models -data class ChecklistItem(val title: String, val isDone: Boolean) +data class ChecklistItem(val id: Int, val title: String, val isDone: Boolean) diff --git a/app/src/main/res/layout/item_checklist.xml b/app/src/main/res/layout/item_checklist.xml new file mode 100644 index 00000000..af11a10a --- /dev/null +++ b/app/src/main/res/layout/item_checklist.xml @@ -0,0 +1,22 @@ + + + + + +