diff options
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.kt | 61 |
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 { |