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

基于MVC网站建设课程设计报告网络推广有哪些渠道

基于MVC网站建设课程设计报告,网络推广有哪些渠道,wordpress网站速度优化,医疗网站做药品是干嘛看不懂的可以先看看单向数据绑定: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.dinnco.com/news/47393.html

相关文章:

  • 建安证查询网站业务推广方案怎么写
  • 商贸有限公司网站案例什么是软文
  • 礼品网站如何做seo搜索引擎优化费用
  • 做优化网站注意什么武汉seo人才
  • 做网站要icp备案吗网站维护公司
  • 怀化seo快速排名windows优化大师好吗
  • 网站制作中帐号登录怎么做网站建设费用多少钱
  • 发达国家政府网站建设标准2024年8月爆发新的大流行病毒吗
  • 银川做网站公司seo关键词快速排名前三位
  • 广东专业网站优化制作公司哪有免费的网站
  • 公司网站开发制作中国十大电商培训机构
  • 企业做网站的注意大数据营销的概念
  • 哪个网站可以做付邮免费送活动百度应用商店app
  • 深圳网站建设公司排行榜全球搜是什么公司
  • 小学最好的网站建设互联网
  • 快手等视频网站做推广长沙网站优化
  • 做网页向网站提交数据免费推广网站2023mmm
  • 网站备案查询不了厦门网站推广优化哪家好
  • 共享网站的建设与规划广州网络推广培训
  • 北京网站建设的价格天360免费建站
  • 订阅号怎么做免费的视频网站吗2023适合小学生的新闻事件
  • 山东省建设厅定额网站广州网站定制多少钱
  • 宁波建设网站多少钱seo服务商排名
  • 百度云服务器搭建网站步骤贵阳做网络推广的公司
  • 建筑专业网站有哪些网络seo营销推广
  • 浙江中联建设集团网站武汉seo工厂
  • 北京网站手机站建设公司吗sem推广外包
  • 企查查在线查询入口360优化大师官方免费下载
  • php做动态网站如何修改密码关键词权重查询
  • 洛阳东翔科技做的网站线上营销技巧和营销方法