Browse Source

@task: SceneActivity.kt

bai 3 years ago
parent
commit
e62510a390

+ 42 - 16
demo/src/main/java/com/sybotan/android/demo/activities/poc/SceneActivity.kt

@@ -1,39 +1,65 @@
 package com.sybotan.android.demo.activities.poc
 
+import android.content.Intent
 import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
 import android.widget.ExpandableListView
-import android.widget.Toast
 import com.sybotan.android.demo.R
+import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.activities.GraphyActivity
 import com.sybotan.android.demo.adapter.ExpandAdapter
+import com.sybotan.android.demo.entitiies.Build
+import com.sybotan.android.demo.entitiies.Floor
+import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.viewmodel.BuildVM
 import kotlinx.android.synthetic.main.activity_scene.*
 
-class SceneActivity : AppCompatActivity() {
+class SceneActivity : BaseActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_scene)
-
         val expandLV = findViewById<ExpandableListView>(R.id.expandLv)
         expandLV.setGroupIndicator(null)
-       /* val adapter = ExpandAdapter(this, map.keys.toList(), map.values.toList())
-        expandLV.setAdapter(adapter)
-        expandLV.adapter
-        expandLV.divider = null
-        expandLV.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
+        expandLv.divider = null
 
-            Toast.makeText(this@SceneActivity, "click on $groupPosition, $childPosition", Toast.LENGTH_LONG).show()
+        expandLv.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
+            val floor = mBuilds[groupPosition].floor[childPosition]
+            val intent = Intent(this, GraphyActivity::class.java)
+            val bundle = Bundle()
+            bundle.putString("buildingId", floor.buildingId)
+            bundle.putString("floorId", floor.id)
+            bundle.putString("floorMap", floor.infos.floorMap)
+            bundle.putString("from", "scene")
+            intent.putExtra("floor", bundle)
+            startActivity(intent)
             true
         }
 
         backIv.setOnClickListener {
             finish()
-        }*/
+        }
+
+        initViewModel()
+
+    }
 
+    private lateinit var mBuilds: List<Build>
+    private fun initViewModel() {
+        val vm = BuildVM(BaseViewModelInterface { name, params ->
+            mBuilds = params as List<Build>
+            val floors = sep(mBuilds)
+            val adapter = ExpandAdapter(this, mBuilds, floors)
+            expandLv.setAdapter(adapter)
+
+        }, this)
+        vm.getBuilds()
+    }
+
+    private fun sep(builds: List<Build>): List<List<Floor>> {
+        val floors = mutableListOf<List<Floor>>()
+        for (build in builds) {
+            floors.add(build.floor)
+        }
+        return floors
     }
 }
 
-private val map = mapOf(
-        "B1" to listOf("F4", "F3", "F2", "F1"),
-        "B2" to listOf("F5", "F4", "F3", "F2", "F1"),
-        "B3" to listOf("F6", "F5", "F4", "F3", "F2", "F1")
-)