Created
March 11, 2019 14:41
-
-
Save dschinkel/e50aee7b00e30f3c172337d3b77c42e3 to your computer and use it in GitHub Desktop.
Android Remove Item Spike
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.kata.skunkworks | |
data class SkunkWork(val title: String) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.kata.skunkworks | |
class SkunkWorkInteractor(val skunkworkRepo: SkunkWorkRepository) { | |
fun findAllSkunkWork(): MutableList<SkunkWork> { | |
return skunkworkRepo.findAllSkunkWorks() | |
} | |
fun addSkunkWork(title: String) { | |
skunkworkRepo.addSkunkWork(SkunkWork(title)) | |
} | |
fun deleteSkunkWork(id: Int) { | |
skunkworkRepo.deleteSkunkWork(id) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.kata.skunkworks | |
import android.content.Context | |
import android.support.v7.widget.RecyclerView | |
import android.view.LayoutInflater | |
import android.view.View | |
import android.view.ViewGroup | |
import kotlinx.android.synthetic.main.skunk_work_list_item.view.* | |
class SkunkWorkListAdapter(val appContext: Context, var skunkWorkList: MutableList<SkunkWork>) : RecyclerView.Adapter<SkunkWorkListAdapter.SkunkWorkListItem>() { | |
override fun onCreateViewHolder(parent: ViewGroup, position: Int): SkunkWorkListItem { | |
return SkunkWorkListItem( | |
LayoutInflater.from(parent.context).inflate( | |
R.layout.skunk_work_list_item, | |
parent, | |
false | |
) | |
) | |
} | |
override fun getItemCount(): Int { | |
return skunkWorkList.size | |
} | |
fun delete(position: Int) { | |
this.skunkWorkList.removeAt(position) | |
notifyItemRemoved(position) | |
notifyItemRangeChanged(position, getItemCount() - position) | |
} | |
override fun onBindViewHolder(skunkWorkListItem: SkunkWorkListItem, position: Int) { | |
skunkWorkListItem.bindTitle(skunkWorkList[position].title) | |
skunkWorkListItem.deleteSkunkWork(position, this) | |
} | |
class SkunkWorkListItem(private val skunkwork: View) : RecyclerView.ViewHolder(skunkwork) { | |
fun bindTitle(title: String) { | |
skunkwork.skunk_work_title.text = title | |
} | |
fun deleteSkunkWork(position: Int, adapter: SkunkWorkListAdapter) { | |
skunkwork.remove_skunkwork.setOnClickListener { | |
val interactor = SkunkWorkInteractor(SkunkWorkRepository(adapter.appContext)) | |
interactor.deleteSkunkWork(position) | |
adapter.delete(position) | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.kata.skunkworks | |
import android.content.Context | |
import android.content.SharedPreferences | |
class SkunkWorkRepository(appContext: Context) { | |
private val defaultString = """ | |
Can Beam,Mini Drone Forge Tour Guide,Smart Light That Goes Red When Build Fails,NFC Chip That Gives Wifi Access, | |
NFC Ventra Clothing,Train Set,Nap Pods,DX War Room,Greeting Robot That Recognizes You Based On Key Card, | |
Cool Light For When Creative Collision is Ready,Interactive Room Reservation System,Custom Magnet All The Things, | |
Amiibo Features Around Features Around The Office,Card Wall With NFC Chips | |
""".trimIndent().replace("\n", "") | |
private val sharedPrefs = appContext.getSharedPreferences("com.kata.skunkworks", Context.MODE_PRIVATE) | |
fun findAllSkunkWorks(): MutableList<SkunkWork> { | |
val skunkWorksString: String = sharedPrefs.getString("skunkworksList", defaultString) ?: defaultString | |
return skunkWorksString.split(",").map(::SkunkWork).toMutableList() | |
} | |
fun addSkunkWork(skunkWork: SkunkWork) { | |
val editor: SharedPreferences.Editor = sharedPrefs.edit() | |
val skunkWorks: MutableList<SkunkWork> = findAllSkunkWorks().toMutableList() | |
skunkWorks.add(skunkWork) | |
editor.remove("skunkworksList") | |
editor.apply() | |
editor.putString("skunkworksList", skunkWorks.map(SkunkWork::title).joinToString(",")) | |
editor.apply() | |
} | |
fun deleteSkunkWork(id: Int) { | |
val editor: SharedPreferences.Editor = sharedPrefs.edit() | |
val skunkWorks: MutableList<SkunkWork> = findAllSkunkWorks().toMutableList() | |
skunkWorks.removeAt(id) | |
editor.remove("skunkworksList") | |
editor.apply() | |
editor.putString("skunkworksList", skunkWorks.map(SkunkWork::title).joinToString(",")) | |
editor.apply() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment