aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt61
1 files changed, 60 insertions, 1 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt b/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
index 506178ad..265652a0 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/EditExtractionActivity.kt
@@ -6,13 +6,72 @@ import android.support.v7.app.AppCompatActivity
import android.text.TextUtils
import android.view.*
import android.widget.AbsListView
+import android.widget.BaseAdapter
import android.widget.ListView
import kotlinx.android.synthetic.main.layout_edit_list.*
import kotlinx.android.synthetic.main.list_item_simple_text.view.*
import kotlinx.android.synthetic.main.part_edittext.view.*
import net.lacolaco.smileessence.R
import net.lacolaco.smileessence.data.ExtractionWord
-import net.lacolaco.smileessence.view.adapter.UnorderedCustomListAdapter
+import net.lacolaco.smileessence.util.UIHandler
+import java.util.*
+
+abstract class CustomListAdapter<out T> : BaseAdapter() {
+ private var isNotifiable = true
+ private var frozenList: List<T> = ArrayList()
+
+ fun setNotifiable(notifiable: Boolean) {
+ isNotifiable = notifiable
+ }
+
+ override fun getCount(): Int {
+ return frozenList.size
+ }
+
+ override fun getItem(position: Int): T {
+ return frozenList[position]
+ }
+
+ override fun getItemId(position: Int): Long {
+ return position.toLong()
+ }
+
+ override fun notifyDataSetChanged() {
+ frozenList = Collections.unmodifiableList(list)
+ super.notifyDataSetChanged()
+ }
+
+ protected abstract val list: List<T>
+
+ fun update() {
+ if (isNotifiable) {
+ updateForce()
+ }
+ }
+
+ fun updateForce() {
+ UIHandler().post { this.notifyDataSetChanged() }
+ }
+}
+
+
+abstract class UnorderedCustomListAdapter<T> constructor(override val list: ArrayList<T> = ArrayList()) : CustomListAdapter<T>() {
+ init {
+ update()
+ }
+
+ @Synchronized
+ fun add(item: T) = list.add(item)
+
+ @Synchronized
+ fun addAll(items: Collection<T>) = list.addAll(items)
+
+ @Synchronized
+ fun clear() = list.clear()
+
+ @Synchronized
+ fun remove(item: T): Boolean = list.remove(item)
+}
class EditExtractionActivity : AppCompatActivity() {
private val adapter by lazy {