继承basebinding类型的加上注解,解决崩溃问题

This commit is contained in:
yitao_hello
2022-01-13 22:11:52 +08:00
committed by huangjian
parent 9d53334908
commit 8c1946b67b
12 changed files with 64 additions and 30 deletions

View File

@@ -20,18 +20,17 @@ import com.yizhuan.erban.skill.event.SkillEvent
import com.yizhuan.erban.skill.repository.SkillDataManager
import com.yizhuan.erban.skill.repository.SkillModel
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import io.reactivex.functions.Consumer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@ActLayoutRes(R.layout.activity_skill_home)
class ActivitySkillHome : BaseBindingActivity<ActivitySkillHomeBinding>() {
private lateinit var adapter: MineSkillCardAdapter
private var addDialog: AddSkillCardDialog? = null
private lateinit var skillTypeList: List<SkillTypeEntity>
private var skillTypeList: List<SkillTypeEntity>? = null
override fun init() {
initTitleBar("技能卡")
EventBus.getDefault().register(this)
@@ -46,50 +45,55 @@ class ActivitySkillHome : BaseBindingActivity<ActivitySkillHomeBinding>() {
0 -> showAddableSkillDialog()
else -> {
val item = adapter.getItem(position) as SkillPropertyEntity
// EditSkillActivity
}
}
}
mBinding.refreshLayout.setOnRefreshListener {
loadUserSkillList()
}
CoroutineScope(Dispatchers.Main).launch {
loadSkillTypeList()
loadUserSkillList()
}
SkillModel.instance.getSkillTypeList()
.compose(bindToLifecycle())
.subscribe(Consumer {
skillTypeList = it
loadUserSkillList()
},
Consumer { th ->
th.printStackTrace()
skillTypeList = ArrayList(0)
loadUserSkillList()
})
}
private fun loadUserSkillList() {
SkillModel.instance.getUserAllSkillCardDetail()
.compose(bindToLifecycle())
.doOnSubscribe { dialogManager.showProgressDialog(this) }
.subscribe(
Consumer {
if (mBinding.refreshLayout.isRefreshing) {
mBinding.refreshLayout.isRefreshing = false
}
adapter.setHeaderAndEmpty(true)
//这里没有做加载功能
adapter.setNewData(it)
if (it.isEmpty()) {
adapter.setHeaderAndEmpty(false)
adapter.emptyView = createEmptyView()
}
dialogManager.dismissDialog()
},
Consumer { th ->
th.printStackTrace()
mBinding.refreshLayout.isRefreshing = false
adapter.setHeaderAndEmpty(false)
adapter.emptyView = createEmptyView()
dialogManager.dismissDialog()
})
}
private fun loadSkillTypeList() {
SkillModel.instance.getSkillTypeList()
.compose(bindToLifecycle())
.subscribe(Consumer { skillTypeList = it },
Consumer { th ->
th.printStackTrace()
skillTypeList = ArrayList(0)
})
}
private fun createEmptyView(): View {
val rootHeight = UIUtil.dip2px(this, 180.0)
@@ -120,7 +124,7 @@ class ActivitySkillHome : BaseBindingActivity<ActivitySkillHomeBinding>() {
private fun showAddableSkillDialog() {
if (addDialog == null) {
addDialog = AddSkillCardDialog(context, skillTypeList) {
addDialog = AddSkillCardDialog(context, skillTypeList!!) {
AddSkillActivity.start(this, it.cardId)
}
}

View File

@@ -13,8 +13,10 @@ import com.yizhuan.erban.skill.entity.SkillRecordEntity
import com.yizhuan.erban.skill.repository.SkillDataManager
import com.yizhuan.erban.skill.repository.SkillModel
import com.yizhuan.erban.skill.widget.SelectionItem
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import io.reactivex.functions.Consumer
@ActLayoutRes(R.layout.activity_skill_edit)
class AddSkillActivity : BaseBindingActivity<ActivitySkillEditBinding>() {
private lateinit var delegate: ActivitySkillEditDelegate
override fun init() {

View File

@@ -1,5 +1,7 @@
package com.yizhuan.erban.skill.activity
import android.content.Context
import android.content.Intent
import android.view.View
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseBindingActivity
@@ -7,15 +9,18 @@ import com.yizhuan.erban.databinding.ActivitySkillEditBinding
import com.yizhuan.erban.skill.event.SkillEvent
import com.yizhuan.erban.skill.repository.SkillModel
import com.yizhuan.erban.ui.widget.dialog.CommonTipDialog
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import io.reactivex.functions.Consumer
import org.greenrobot.eventbus.EventBus
@ActLayoutRes(R.layout.activity_skill_edit)
class EditSkillActivity : BaseBindingActivity<ActivitySkillEditBinding>() {
private lateinit var mDelegate: ActivitySkillEditDelegate
private lateinit var deleteTipDialog: CommonTipDialog
override fun init() {
mBinding.setClick { this }
mDelegate = ActivitySkillEditDelegate(this)
}
override fun onClick(v: View) {
@@ -59,4 +64,13 @@ class EditSkillActivity : BaseBindingActivity<ActivitySkillEditBinding>() {
toast("删除失败")
})
}
companion object{
private const val ITEM_ID = "item_id"
fun start(context:Context,id:Int){
val intent = Intent(context,EditSkillActivity::class.java)
intent.putExtra(ITEM_ID,id)
context.startActivity(intent)
}
}
}

View File

@@ -13,7 +13,7 @@ class MineSkillListDecoration(context: Context, topSpaceDp: Int, bottomSpaceDp:
init {
topSpace = UIUtil.dip2px(context, topSpaceDp.toDouble())
bottomSpace = UIUtil.dip2px(context, bottomSpace.toDouble())
bottomSpace = UIUtil.dip2px(context, bottomSpaceDp.toDouble())
}
override fun getItemOffsets(

View File

@@ -26,5 +26,8 @@ class SkillGridDecoration(context: Context, marginDp: Int, spaceDp: Int) :
outRect.left = spaceDp / 2
outRect.right = marginDp
}
if(position/2>0&&position<parent.childCount-2){
outRect.bottom=spaceDp
}
}
}

View File

@@ -1,14 +1,19 @@
package com.yizhuan.erban.skill.dialog
import android.content.Context
import android.view.Gravity
import androidx.recyclerview.widget.GridLayoutManager
import com.yizhuan.erban.R
import com.yizhuan.erban.databinding.DialogAddSkillItemBinding
import com.yizhuan.erban.skill.adapter.AddSkillCardAdapter
import com.yizhuan.erban.skill.decoration.MineSkillListDecoration
import com.yizhuan.erban.skill.decoration.SkillGridDecoration
import com.yizhuan.erban.skill.entity.SkillTypeEntity
import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.dialog_add_skill_item)
class AddSkillCardDialog(
context: Context,
data: List<SkillTypeEntity>,
@@ -20,13 +25,15 @@ class AddSkillCardDialog(
init {
width = UIUtil.getScreenWidth(context)
height = UIUtil.dip2px(context, 366.0)
gravity = Gravity.BOTTOM
this.data = data
}
private lateinit var adapter: AddSkillCardAdapter
override fun init() {
binding.recyclerView.layoutManager = GridLayoutManager(context, 2)
binding.recyclerView.addItemDecoration(SkillGridDecoration(context, 15, 26))
binding.recyclerView.addItemDecoration(MineSkillListDecoration(context, 15, 26))
adapter = AddSkillCardAdapter()
adapter.setOnItemClickListener { _, _, position ->
callback(adapter.getItem(position)!!)//能到这里肯定是点击了某个item ,肯定获取的是有效值
closeDialog()

View File

@@ -3,13 +3,16 @@ package com.yizhuan.erban.skill.dialog
import android.content.Context
import android.view.View
import androidx.recyclerview.widget.GridLayoutManager
import com.yizhuan.erban.R
import com.yizhuan.erban.databinding.DialogAddSkillItemBinding
import com.yizhuan.erban.skill.adapter.SkillSelectionAdapter
import com.yizhuan.erban.skill.decoration.SkillGridDecoration
import com.yizhuan.erban.skill.entity.PropDictVosEntity
import com.yizhuan.erban.skill.entity.PropsEntity
import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.dialog_add_skill_item)
class SkillSelectionDialog(
context: Context, var item: PropsEntity?,
val callback: (value: PropDictVosEntity) -> Unit

View File

@@ -7,10 +7,7 @@ import com.yizhuan.erban.skill.entity.SkillTypeEntity
import com.yizhuan.xchat_android_core.bean.response.ServiceResult
import io.reactivex.Single
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Query
import retrofit2.http.*
interface Api {
@GET("/skillCard/getUserAllSkillCardDetail")
@@ -19,7 +16,7 @@ interface Api {
@GET("/skillCard/getTypeList")
fun getSkillTypeList(): Single<ServiceResult<List<SkillTypeEntity>>>
@POST("/skillCard/getCardInfoById")
@GET("/skillCard/getCardInfoById")
fun getCardInfoById(@Query("cardId") cardId: String): Single<ServiceResult<SkillPropertyEntity>>
@POST("/skillCard/saveOrUpdate")

View File

@@ -30,11 +30,12 @@ class SkillCardView(
constructor(context: Context) : this(context, null)
constructor(context: Context, @Nullable attrs: AttributeSet?) : this(context, attrs, 0)
private lateinit var itemList: ArrayList<SkillItem>
private var itemList: ArrayList<SkillItem>
private var rootEntity: SkillRecordEntity? = null
init {
orientation = VERTICAL
itemList = ArrayList()
}
//标题

View File

@@ -10,7 +10,9 @@ import com.yizhuan.erban.databinding.ActivityScheduleManageBinding
import com.yizhuan.erban.flutter.RouterConstants
import com.yizhuan.erban.ui.webview.CommonWebViewActivity
import com.yizhuan.xchat_android_core.UriProvider
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
@ActLayoutRes(R.layout.activity_schedule_manage)
class ScheduleManageActivity : BaseBindingActivity<ActivityScheduleManageBinding>() {
override fun init() {
initTitleBar("赛程管理")

View File

@@ -2,9 +2,8 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="160dp"
android:layout_height="0dp"
android:background="@drawable/bg_f1f1fa_8"
app:layout_constraintDimensionRatio="h,48:160">
android:layout_height="48dp"
android:background="@drawable/bg_f1f1fa_8">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_icon"

View File

@@ -25,6 +25,7 @@ public abstract class BaseBindingDialog<T extends ViewDataBinding> extends AppCo
protected int width, height;
protected Context context;
protected int gravity;
public BaseBindingDialog(Context context) {
this(context, 0);
@@ -35,6 +36,7 @@ public abstract class BaseBindingDialog<T extends ViewDataBinding> extends AppCo
this.context = context;
width = ScreenUtil.getDialogWidth();
height = WindowManager.LayoutParams.WRAP_CONTENT;
gravity = Gravity.CENTER;
}
protected T binding;
@@ -49,7 +51,7 @@ public abstract class BaseBindingDialog<T extends ViewDataBinding> extends AppCo
windowParams.width = width;
windowParams.height = height;
windowParams.dimAmount = 0.5f;
windowParams.gravity = Gravity.CENTER;
windowParams.gravity = gravity;
windowParams.x = 0;
windowParams.y = 0;
// window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);