diff --git a/app/build.gradle b/app/build.gradle index a44c85c..9a94bed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -42,6 +42,9 @@ androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' + // AndroidDesignSupportLibrary + implementation "com.android.support:design:26.1.0" + // DataBinding kapt "com.android.databinding:compiler:3.0.0" diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/CounterAdapter.kt b/app/src/main/kotlin/jackall/overlaymulticounter/CounterAdapter.kt new file mode 100644 index 0000000..67558ea --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/CounterAdapter.kt @@ -0,0 +1,39 @@ +package jackall.overlaymulticounter + +import android.content.Context +import android.databinding.DataBindingUtil +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import jackall.overlaymulticounter.databinding.ListCounterItemBinding +import jackall.overlaymulticounter.viewmodel.CounterItemViewModel + +/** + * Created by matsumoto_k on 2017/11/08. + */ +class CounterAdapter(val context: Context, val items: ArrayList) : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { + val binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.list_counter_item, parent, false) + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: ViewHolder?, position: Int) { + holder?.binding?.counterItemViewModel = items.get(position) + } + + override fun getItemCount(): Int { + return items.count() + } + + fun insert(item: CounterItemViewModel) { + items.add(item) + notifyItemInserted(itemCount) + } + + fun remove(position: Int) { + items.removeAt(position) + notifyItemRemoved(position) + } + + inner class ViewHolder(val binding: ListCounterItemBinding) : RecyclerView.ViewHolder(binding.root) +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/CounterItemViewModel.kt b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/CounterItemViewModel.kt new file mode 100644 index 0000000..b484624 --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/CounterItemViewModel.kt @@ -0,0 +1,36 @@ +package jackall.overlaymulticounter.viewmodel + +import android.databinding.BaseObservable +import android.databinding.ObservableField +import android.view.View +import io.realm.RealmChangeListener +import jackall.overlaymulticounter.vo.Counter + +/** + * Created by matsumoto_k on 2017/11/08. + */ +class CounterItemViewModel(val counter: Counter) : BaseObservable() { + val id = counter.id + val title = ObservableField(counter.title) + val count = ObservableField(counter.count.toString()) + val realmChangeListener = RealmChangeListener { + title.set(it.title) + count.set(it.count.toString()) + } + + init { + counter.addChangeListener(realmChangeListener) + } + + fun onClickPlus(view: View) { + counter.count++ + } + + fun onClickMinus(view: View) { + counter.count-- + } + + fun onClickReset(view: View) { + counter.count = 0 + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/reset.png b/app/src/main/res/drawable-v24/reset.png new file mode 100644 index 0000000..e869743 --- /dev/null +++ b/app/src/main/res/drawable-v24/reset.png Binary files differ diff --git a/app/src/main/res/layout/list_counter_item.xml b/app/src/main/res/layout/list_counter_item.xml new file mode 100644 index 0000000..57a1037 --- /dev/null +++ b/app/src/main/res/layout/list_counter_item.xml @@ -0,0 +1,76 @@ + + + + + + + + + + +