diff --git a/app/src/main/kotlin/jackall/moncalc/adapter/RegistAdapter.kt b/app/src/main/kotlin/jackall/moncalc/adapter/RegistAdapter.kt new file mode 100644 index 0000000..139ff75 --- /dev/null +++ b/app/src/main/kotlin/jackall/moncalc/adapter/RegistAdapter.kt @@ -0,0 +1,42 @@ +package jackall.moncalc.adapter + +import android.content.Context +import android.databinding.DataBindingUtil +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import jackall.moncalc.R +import jackall.moncalc.databinding.RegistItemBinding +import jackall.moncalc.viewmodel.RegistItemViewModel + +/** + * Created by matsumoto_k on 2017/11/04. + */ +class RegistAdapter(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.regist_item, parent, false) + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: ViewHolder?, position: Int) { + holder?.binding?.viewModel = items.get(position) + } + + override fun getItemCount(): Int { + return items.count() + } + + fun add(item: RegistItemViewModel) { + items.add(item) + notifyItemInserted(items.size - 1) + } + + fun remove() { + if (itemCount > 1) { + items.removeAt(itemCount - 1) + notifyItemRemoved(itemCount) + } + } + + inner class ViewHolder(val binding: RegistItemBinding) : RecyclerView.ViewHolder(binding.root) +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt b/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt index 2afbe05..7af055c 100644 --- a/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt +++ b/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt @@ -38,4 +38,8 @@ fun countByAttribute(attribute: Int): Int { return realm.where(QuestRecord::class.java).equalTo("attribute", attribute).findAll().size } + + fun countById(id: Int): Int { + return realm.where(QuestRecord::class.java).equalTo("templeId", id).findAll().size + } } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/service/MainService.kt b/app/src/main/kotlin/jackall/moncalc/service/MainService.kt index 9ffdb76..f62d6f2 100644 --- a/app/src/main/kotlin/jackall/moncalc/service/MainService.kt +++ b/app/src/main/kotlin/jackall/moncalc/service/MainService.kt @@ -21,8 +21,6 @@ import jackall.moncalc.utils.MySharedPref import jackall.moncalc.viewmodel.OverlayRegistViewModel import jackall.moncalc.viewmodel.OverlayViewModel -import jackall.moncalc.vo.Fruit -import jackall.moncalc.vo.Grade import jackall.moncalc.vo.Temple import kotlinx.android.synthetic.main.move_overlay.view.* @@ -125,11 +123,7 @@ registBinding.registViewModel = overlayRegistViewModel registBinding.viewModel = overlayViewModel val templeSpinnerAdapter = CustomSpinnerAdapter(this, monstDataRealmHelper.findNames(Temple::class.java)) - val fruitSpinnerAdapter = CustomSpinnerAdapter(this, monstDataRealmHelper.findNames(Fruit::class.java)) - val gradeSpinnerAdapter = CustomSpinnerAdapter(this, monstDataRealmHelper.findNames(Grade::class.java)) registBinding.templeSpinner.adapter = templeSpinnerAdapter - registBinding.fruitSpinner.adapter = fruitSpinnerAdapter - registBinding.gradeSpinner.adapter = gradeSpinnerAdapter } override fun showMoveView() { diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/HistoryViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/HistoryViewModel.kt index 3413f7b..a815e07 100644 --- a/app/src/main/kotlin/jackall/moncalc/viewmodel/HistoryViewModel.kt +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/HistoryViewModel.kt @@ -28,14 +28,14 @@ fun onRefresh() { refreshLayoutLoading.set(true) hisotoryItems.clear() - questRealmHelper.findAll().sortedByDescending { it.createAt }.forEach { - hisotoryItems.add( - HistoryItem(templeName = monstDataRealmHelper.findNameById(Temple::class.java, it.templeId), - fruitName = monstDataRealmHelper.findNameById(Fruit::class.java, it.fruitId), - gradeName = monstDataRealmHelper.findNameById(Grade::class.java, it.gradeId), - createAt = it.createAt) - ) - } +// questRealmHelper.findAll().sortedByDescending { it.createAt }.forEach { +// hisotoryItems.add( +// HistoryItem(templeName = monstDataRealmHelper.findNameById(Temple::class.java, it.templeId), +// fruitName = monstDataRealmHelper.findNameById(Fruit::class.java, it.fruitId), +// gradeName = monstDataRealmHelper.findNameById(Grade::class.java, it.gradeId), +// createAt = it.createAt) +// ) +// } adapter.setItemAndRefresh(hisotoryItems) refreshLayoutLoading.set(false) } diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt index 9a6970c..ae1f00c 100644 --- a/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt @@ -2,20 +2,23 @@ import android.content.Context import android.databinding.BaseObservable +import android.databinding.BindingAdapter import android.databinding.ObservableInt +import android.support.v7.widget.LinearLayoutManager +import android.support.v7.widget.RecyclerView import android.view.View import android.widget.Toast +import io.realm.RealmList import jackall.moncalc.App +import jackall.moncalc.adapter.CustomSpinnerAdapter +import jackall.moncalc.adapter.RegistAdapter import jackall.moncalc.common.PreferenceKeys import jackall.moncalc.common.PreferenceNames import jackall.moncalc.contract.MainServiceContract import jackall.moncalc.db.MonstDataRealmHelper import jackall.moncalc.db.QuestRecordRealmHelper import jackall.moncalc.utils.MySharedPref -import jackall.moncalc.vo.Fruit -import jackall.moncalc.vo.Grade -import jackall.moncalc.vo.QuestRecord -import jackall.moncalc.vo.Temple +import jackall.moncalc.vo.* import java.util.* /** @@ -30,14 +33,37 @@ val templeRank = ObservableInt(mySharedPref.getValue(PreferenceKeys.TEMPLEPOS, Int::class.java, 0) as Int) val fruitRank = ObservableInt(mySharedPref.getValue(PreferenceKeys.FRUITPOS, Int::class.java, 0) as Int) val gradeRank = ObservableInt(mySharedPref.getValue(PreferenceKeys.GRADEPOS, Int::class.java, 0) as Int) + val fruitSpinnerAdapter = CustomSpinnerAdapter(context, monstDataRealmHelper.findNames(Fruit::class.java)) + val gradeSpinnerAdapter = CustomSpinnerAdapter(context, monstDataRealmHelper.findNames(Grade::class.java)) + val registAdapter = RegistAdapter(context, arrayListOf(RegistItemViewModel(fruitSpinnerAdapter, gradeSpinnerAdapter))) + + init { + println("さいずは${monstDataRealmHelper.findNames(Fruit::class.java).size}") + } + + fun onClickAdd(view: View) { + registAdapter.add(RegistItemViewModel(fruitSpinnerAdapter, gradeSpinnerAdapter)) + } + + fun onClickRemove(view: View) { + registAdapter.remove() + } fun onClickRegist(view: View) { + val drops = RealmList() + registAdapter.items.forEach { + drops.add( + Drop( + fruitId = monstDataRealmHelper.findIdByRank(Fruit::class.java, it.fruitRank.get()), + gradeId = monstDataRealmHelper.findIdByRank(Grade::class.java, it.gradeRank.get()) + ) + ) + } questRecordRealmHelper.insert( QuestRecord( attribute = monstDataRealmHelper.findTempleAttributeByRank(templeRank.get()), templeId = monstDataRealmHelper.findIdByRank(Temple::class.java, templeRank.get()), - fruitId = monstDataRealmHelper.findIdByRank(Fruit::class.java, fruitRank.get()), - gradeId = monstDataRealmHelper.findIdByRank(Grade::class.java, gradeRank.get()), + drops = drops, createAt = Date() ) ) @@ -56,4 +82,17 @@ mySharedPref.putValue(PreferenceKeys.FRUITPOS, Int::class.java, fruitPos) mySharedPref.putValue(PreferenceKeys.GRADEPOS, Int::class.java, gradePos) } + + object Adapter { + @JvmStatic + @BindingAdapter("android:setRecyclerAdapter") + fun setAdapter(recyclerView: RecyclerView, registAdapter: RegistAdapter?) { + if (registAdapter == null) { + println("ぬるやでなあ") + } + recyclerView.layoutManager = LinearLayoutManager(App.instance) + recyclerView.adapter = registAdapter + println("ここまできた") + } + } } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/RegistItemViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/RegistItemViewModel.kt new file mode 100644 index 0000000..1ae84b8 --- /dev/null +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/RegistItemViewModel.kt @@ -0,0 +1,26 @@ +package jackall.moncalc.viewmodel + +import android.databinding.BaseObservable +import android.databinding.BindingAdapter +import android.databinding.ObservableInt +import android.widget.Spinner +import jackall.moncalc.adapter.CustomSpinnerAdapter + +/** + * Created by matsumoto_k on 2017/11/04. + */ +class RegistItemViewModel( + val fruitSpinnerAdapter: CustomSpinnerAdapter, + val gradeSpinnerAdapter: CustomSpinnerAdapter +) : BaseObservable() { + val fruitRank = ObservableInt() + val gradeRank = ObservableInt() + + object Adapter { + @JvmStatic + @BindingAdapter("android:setSpinnerAdapter") + fun setAdapter(spinner: Spinner, adapter: CustomSpinnerAdapter) { + spinner.adapter = adapter + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/regist_item.xml b/app/src/main/res/layout/regist_item.xml new file mode 100644 index 0000000..f70b554 --- /dev/null +++ b/app/src/main/res/layout/regist_item.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/regist_overlay.xml b/app/src/main/res/layout/regist_overlay.xml index 31b8e5b..40449e3 100644 --- a/app/src/main/res/layout/regist_overlay.xml +++ b/app/src/main/res/layout/regist_overlay.xml @@ -1,6 +1,7 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> @@ -16,21 +17,18 @@