当前位置: 首页 > news >正文

基于MVC网站建设课程设计报告18款禁用看奶app入口

基于MVC网站建设课程设计报告,18款禁用看奶app入口,个人网站 费用,青海网站建设看不懂的可以先看看单向数据绑定:Android DataBinding数据变化时自动更新界面_皮皮高的博客-CSDN博客 然后再确定已经启动了dataBinding的情况下,按下面的顺序来: 首先创建一个自定义View: import android.content.Context imp…

看不懂的可以先看看单向数据绑定:Android DataBinding数据变化时自动更新界面_皮皮高的博客-CSDN博客

然后再确定已经启动了dataBinding的情况下,按下面的顺序来:

首先创建一个自定义View:

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Rect
import android.util.AttributeSet
import android.view.Viewclass MyView(context: Context, attr: AttributeSet) : View(context, attr) {var number = 0set(value) {field = valueinvalidate()}private val onNumberChangeListenerList = ArrayList<OnNumberChangeListener>()private val paint = Paint()init {setOnClickListener {number ++invalidate()for (item in onNumberChangeListenerList) {item.onChange(number)}}}override fun onDraw(canvas: Canvas?) {super.onDraw(canvas)canvas!!paint.color = Color.REDcanvas.drawRect(Rect(0, 0, width, height), paint)paint.color = Color.YELLOWpaint.textSize = resources.displayMetrics.density * 20canvas.drawText(number.toString(), width  / 2f, height / 2f, paint)}fun addOnNumberChangeListener(listener: OnNumberChangeListener) {onNumberChangeListenerList.add(listener)}fun removeOnNumberChangeListener(listener: OnNumberChangeListener) {onNumberChangeListenerList.remove(listener)}interface OnNumberChangeListener {fun onChange(number: Int)}}

代码很简单,就是在界面上显示一个矩形,然后里面有个文本,用来显示被点击了多少次。

接着实现双向数据绑定逻辑:

import androidx.databinding.BindingAdapter
import androidx.databinding.InverseBindingAdapter
import androidx.databinding.InverseBindingListener
import androidx.databinding.adapters.ListenerUtilobject ViewAdapter {@BindingAdapter("number")@JvmStatic fun setNumber(view: MyView, number: Int){if (view.number == number) {return}view.number = number}@InverseBindingAdapter(attribute = "number")@JvmStatic fun getNumber(view: MyView): Int{return view.number}@BindingAdapter("numberAttrChanged")@JvmStatic fun setNumberListener(view : MyView, listener: InverseBindingListener?) {val newListener = object : MyView.OnNumberChangeListener {override fun onChange(number: Int) {listener?.onChange()}}val oldListener = ListenerUtil.trackListener(view, newListener, R.id.onNumberChangeListener)oldListener?.apply {view.removeOnNumberChangeListener(this)}view.addOnNumberChangeListener(newListener)}}

总的来说只要实现三个方法就行了,现在来说下每个方法的含义:

setNumber() 用于把数据设置到View上,这里还需要添加判断数据是否重复,重复了就return,不然有概率会死循环
getNumber() 用于给框架提供数据,也就是要返回用于数据双向绑定的值。
setNumberListener() 用于给框架设置数据变化监听,当监听到变化时,框架就会调用getNumber()来获取数据并应用到ViewMode上。(方法内部调用了一个ListenerUtil.trackListener()方法,这是官方的推荐的写法,用于监听器类型是集合的情况下,如果是set/get之类的那就直接set新的监听器即可。)

然后创建ViewMode:

import androidx.databinding.ObservableFieldclass UserObservable {val number: ObservableField<Int> by lazy {ObservableField<Int>()}}

创建Activity,并实现一些基础的显示逻辑:

import android.app.Activity
import android.os.Bundle
import android.view.View
import androidx.databinding.DataBindingUtil
import com.cc.databingdingtest.databinding.MainBindingclass MainActivity: Activity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val binding: MainBinding = DataBindingUtil.setContentView(this, R.layout.main)val userViewMode = UserObservable()userViewMode.number.set(0)binding.user = userViewModefindViewById<View>(android.R.id.content).setOnClickListener {userViewMode.number.set(1000)}}}

测试一下:

先点击View,然后打断点看看ViewMode里的数据是否会变化。

成功。

然后再看看修改ViewMode数据是否能自动应用到界面上

成功的实现了双向数据绑定  。

http://www.hengruixuexiao.com/news/51475.html

相关文章:

  • 网站建设需求发布2024最火的十大新闻有哪些
  • 成都建筑设计有限公司seo搜索引擎优化教程
  • 如何拥有自己的网站域名湖南专业关键词优化服务水平
  • 菜谱网站手机源码百度广告
  • 网站上线倒计时html5模板如何优化关键词搜索排名
  • 杭州外贸网站建设公司百度站点
  • 上海黄浦 网站制作友情链接怎么添加
  • 北京网站制作与建设公司手机百度搜索
  • 十大不封号直播平台seo外推软件
  • seo上海推广公司优化网站搜索排名
  • 有没有做网站的软件专业的网站建设公司
  • 代做原创毕业设计网站东莞网站优化关键词排名
  • 手机模板网站开发站长统计app软件下载官网
  • 有哪些做网站的网站成都私人网站建设
  • 网站开发工程师ppt自助建站系统破解版
  • 简历模板网站有哪些互联网广告销售
  • 建外贸商城网站会计培训班需要学多长时间
  • 深圳网站建设费用多少钱湖人最新消息
  • 一个新手怎么做电商运营济南做seo的公司排名
  • 网站建设项目标书app软件开发
  • 路由器做映射后 内网可以访问到我的网站 但是外网无法访问沪指重上3000点
  • 优秀包装设计网站互联网公司排名2021
  • 国内做网站上市公司廊坊网站建设优化
  • 建设工程网站新专家入库seo技巧
  • 做废品交易看什么什么网站企业营销策划
  • 服务器怎么添加网站会计培训班初级费用
  • 网站做网络营销的效果网络营销的方式包括
  • 湖南做网站 多少钱磐石网络电商seo是什么意思啊
  • 网站栏目页关键词如何做上海比较好的seo公司
  • asp.net 网站开发 教程2345浏览器主页网址