瀏覽代碼

@task: space floor

bai 3 年之前
父節點
當前提交
aa54e4b1f8

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

@@ -13,9 +13,9 @@ class SceneActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_scene)
 
-        val expandLV = findViewById<ExpandableListView>(R.id.expandLV)
+        val expandLV = findViewById<ExpandableListView>(R.id.expandLv)
         expandLV.setGroupIndicator(null)
-        val adapter = ExpandAdapter(this, map.keys.toList(), map.values.toList())
+       /* val adapter = ExpandAdapter(this, map.keys.toList(), map.values.toList())
         expandLV.setAdapter(adapter)
         expandLV.adapter
         expandLV.divider = null
@@ -27,7 +27,7 @@ class SceneActivity : AppCompatActivity() {
 
         backIv.setOnClickListener {
             finish()
-        }
+        }*/
 
     }
 }

+ 41 - 30
demo/src/main/java/com/sybotan/android/demo/activities/poc/SpaceActivity.kt

@@ -1,57 +1,68 @@
 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 SpaceActivity : AppCompatActivity() {
+class SpaceActivity : BaseActivity() {
+    private lateinit var expandLv: ExpandableListView
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_space)
 
-        val expandLV = findViewById<ExpandableListView>(R.id.expandLV)
-        expandLV.setGroupIndicator(null)
-        val adapter = ExpandAdapter(this, groups, items)
-        expandLV.setAdapter(adapter)
-        expandLV.adapter
-        expandLV.divider = null
-        expandLV.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
+        expandLv = findViewById<ExpandableListView>(R.id.expandLv)
+        expandLv.setGroupIndicator(null)
+        expandLv.divider = null
 
-            Toast.makeText(this@SpaceActivity, "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", "space")
+            intent.putExtra("floor", bundle)
+            startActivity(intent)
             true
         }
-
         backIv.setOnClickListener {
             finish()
         }
+
+        initViewModel()
     }
-}
 
-val groups = listOf("B1", "B2", "B3")
-val items = listOf(
-        listOf("F4", "F3", "F2", "F1"),
-        listOf("F5", "F4", "F3", "F2", "F1"),
-        listOf("F6", "F5", "F4", "F3", "F2", "F1")
-)
-/*
-private fun data(): Map<String, List<String>> {
-    val group = mutableMapOf<String, List<String>>()
+    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)
 
-    val item1 = listOf("F4,F3,F2,F1")
-    group["B1"] = item1
+        }, this)
+        vm.getBuilds()
+    }
 
-    val item2 = listOf("F5,F4,F3,F2,F1")
-    group["B2"] = item2
+    private fun sep(builds: List<Build>): List<List<Floor>> {
+        val floors = mutableListOf<List<Floor>>()
+        for (build in builds) {
+            floors.add(build.floor)
+        }
+        return floors
+    }
 
-    val item3 = listOf("F6,F5,F4,F3,F2,F1")
-    group["B3"] = item3
 
-    return group
 }
-*/
 
 

+ 13 - 11
demo/src/main/java/com/sybotan/android/demo/adapter/ExpandAdapter.kt

@@ -7,16 +7,18 @@ import android.view.ViewGroup
 import android.widget.BaseExpandableListAdapter
 import android.widget.TextView
 import com.sybotan.android.demo.R
+import com.sybotan.android.demo.entitiies.Build
+import com.sybotan.android.demo.entitiies.Floor
 
 
-class ExpandAdapter<String>(
-        context: Context,
-        groups: List<String>,
-        items: List<List<String>>
+class ExpandAdapter(
+    context: Context,
+    groups: List<Build>,
+    items: List<List<Floor>>
 ) : BaseExpandableListAdapter() {
     private var mContext: Context = context
-    private var mGroups: List<String> = groups
-    private var mItems: List<List<String>> = items
+    private var mGroups: List<Build> = groups
+    private var mItems: List<List<Floor>> = items
     private var mLayoutInflater: LayoutInflater = LayoutInflater.from(context)
 
     override fun getGroupCount(): Int {
@@ -27,11 +29,11 @@ class ExpandAdapter<String>(
         return mItems[groupPosition].size
     }
 
-    override fun getGroup(groupPosition: Int): String {
+    override fun getGroup(groupPosition: Int): Build {
         return mGroups[groupPosition]
     }
 
-    override fun getChild(groupPosition: Int, childPosition: Int): String {
+    override fun getChild(groupPosition: Int, childPosition: Int): Floor {
         return mItems[groupPosition][childPosition]
     }
 
@@ -56,9 +58,9 @@ class ExpandAdapter<String>(
         if (holder == null) {
             holder = mLayoutInflater.inflate(R.layout.group_expand_space, parent, false)
         }
-        val group: String = mGroups[groupPosition]
+        val group: Build = mGroups[groupPosition]
         val tvGroup = holder?.findViewById(R.id.groupSpaceTV) as TextView
-        tvGroup.text = group as CharSequence
+        tvGroup.text = group.name
         return holder
     }
 
@@ -69,7 +71,7 @@ class ExpandAdapter<String>(
         }
         val itemTv = holder?.findViewById(R.id.itemSpaceTV) as TextView
         val item = mItems[groupPosition][childPosition]
-        itemTv.text = item as CharSequence
+        itemTv.text = item.localName
         return holder
     }
 }

+ 20 - 0
demo/src/main/java/com/sybotan/android/demo/bean/request/ReqDeviceJob.kt

@@ -0,0 +1,20 @@
+package com.sybotan.android.demo.bean.request
+
+class ReqDeviceJob(
+    val spaceId: String,    //
+    val type: String,
+    val remark: String,     //
+    val target: String   //
+    //val position: Position  //
+)
+
+data class Position(
+    val x: Int,
+    val y: Int,
+    val z: Z
+)
+
+data class Z(
+    val offset: Double,
+    val region: String
+)

+ 48 - 0
demo/src/main/java/com/sybotan/android/demo/entitiies/Build.kt

@@ -0,0 +1,48 @@
+package com.sybotan.android.demo.entitiies
+
+data class BuildEntity(
+    val rtn: List<Build>
+)
+
+data class Build(
+    val createTime: String,
+    val floor: List<Floor>,
+    val id: String,
+    val lastUpdate: String,
+    val localId: String,
+    val localName: String,
+    val name: String,
+    val objectType: String,
+    val projectId: String,
+    val statistics: StatisticsX
+)
+
+data class Floor(
+    val bimIdPre: String,
+    val buildingId: String,
+    val count: Double,
+    val createTime: String,
+    val floorSequenceID: Double,
+    val id: String,
+    val infos: Info,
+    val lastUpdate: String,
+    val localId: String,
+    val localName: String,
+    val modelId: String,
+    val name: String,
+    val objectType: String,
+    val projectId: String,
+    val statistics: Statistics
+)
+
+/*class StatisticsX(
+)*/
+
+data class Info(
+    val floorElevation: Any,
+    val floorMap: String
+)
+
+/*
+class Statistics(
+)*/

+ 7 - 0
demo/src/main/java/com/sybotan/android/demo/retrofit/API.java

@@ -2,6 +2,7 @@ package com.sybotan.android.demo.retrofit;
 
 
 import com.sybotan.android.demo.bean.BaseModel;
+import com.sybotan.android.demo.entitiies.Build;
 import com.sybotan.android.demo.bean.result.AddProblemModel;
 import com.sybotan.android.demo.bean.result.BindQrcodeModel;
 import com.sybotan.android.demo.bean.result.CloseProblemModel;
@@ -146,4 +147,10 @@ public interface API {
     @POST("clmt/dict/sys_eq_list")
     Observable<BaseModel<List<DeviceType>>> requestDeviceTypeJob();
 
+    /**
+     * 查询建筑楼层
+     */
+    @POST("clmt/query/building_floor?target=rtn")
+    Observable<BaseModel<List<Build>>> requestBuildJob();
+
 }

+ 23 - 0
demo/src/main/java/com/sybotan/android/demo/viewmodel/BuildVM.kt

@@ -0,0 +1,23 @@
+package com.sybotan.android.demo.viewmodel
+
+import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.entitiies.Build
+import com.sybotan.android.demo.retrofit.BaseObserver
+import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.retrofit.RetrofitFactory
+
+class BuildVM(b: BaseViewModelInterface, a: BaseActivity) : BaseViewModel(b, a) {
+    companion object {
+        const val BUILD_TYPE = "BUILD_TYPE"
+    }
+
+    fun getBuilds() {
+        val observable = RetrofitFactory.getInstance().requestBuildJob()
+        this.sendRequest(observable, object : BaseObserver<List<Build>>(mActivity, this) {
+            override fun onSuccess(t: List<Build>?) {
+                mEmitter.SendDircetive(BUILD_TYPE, t)
+            }
+
+        }, true)
+    }
+}

+ 1 - 1
demo/src/main/res/layout/activity_scene.xml

@@ -40,7 +40,7 @@
     </android.support.constraint.ConstraintLayout>
 
     <ExpandableListView
-        android:id="@+id/expandLV"
+        android:id="@+id/expandLv"
         android:layout_width="0dp"
         android:layout_height="0dp"
 

+ 1 - 1
demo/src/main/res/layout/activity_space.xml

@@ -40,7 +40,7 @@
     </android.support.constraint.ConstraintLayout>
 
     <ExpandableListView
-        android:id="@+id/expandLV"
+        android:id="@+id/expandLv"
         android:layout_width="0dp"
         android:layout_height="0dp"
 

+ 1 - 0
demo/src/main/res/layout/child_expand_space.xml

@@ -24,6 +24,7 @@
         android:gravity="end"
         android:text="15"
         android:textColor="@color/black_272727"
+        android:visibility="invisible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="1.0"

+ 1 - 1
demo/src/main/res/layout/group_expand_space.xml

@@ -12,7 +12,7 @@
         android:layout_marginEnd="16dp"
         android:text="Group"
         android:textColor="@color/black_272727"
-        android:textSize="20sp"
+        android:textSize="18sp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"