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

唯品会网站架构织梦网络公司网站源码

唯品会网站架构,织梦网络公司网站源码,cn域名后缀网站,网站备案号示例目录 一、基本使用二、ViewModel DataBinding LiveData结合使用1. java版本2. kotlin版本 一、基本使用 MyViewModel.kt package com.example.myviewmodelimport androidx.lifecycle.ViewModelclass MyViewModel : ViewModel() {// 数据放这 进行横竖屏切换不会丢失var num… 目录 一、基本使用二、ViewModel DataBinding LiveData结合使用1. java版本2. kotlin版本 一、基本使用 MyViewModel.kt package com.example.myviewmodelimport androidx.lifecycle.ViewModelclass MyViewModel : ViewModel() {// 数据放这 进行横竖屏切换不会丢失var number : Int 0 }MainActivity.kt package com.example.myviewmodelimport androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.lifecycle.ViewModelProvider // Kotlin的绑定机制 import kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() {// 数据放这 进行横竖屏切换会丢失// var number : Int 0private lateinit var myViewModel: MyViewModeloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// myViewModel MyViewModel() // 不能之间实例化因为这样写系统就不可控了// 旧版本的写法(扩展性不强)// ViewModelProviders.of(this).get(MyViewModel::class.java)// this ViewModelStoreOwner接口myViewModel ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java) // 通过反射来加载Java的class// Kotlin的绑定机制tv_number.text ${myViewModel.number}bt.setOnClickListener {tv_number.text ${myViewModel.number}}} } 数据存放在ViewModelStore类中该类有一个Map存储String, ViewModelvalue为ViewModel该ViewModel存放相关的具体数据横竖屏切换保证ViewModelStore是同一个对象。 二、ViewModel DataBinding LiveData结合使用 1. java版本 activity_main.xml ?xml version1.0 encodingutf-8? !-- DataBinding区域 -- layout xmlns:androidhttp://schemas.android.com/apk/res/androiddatavariablenamevmtypecom.example.jetpack_kotlin.MainViewModel //data!-- UI绘制区域 --LinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:orientationverticalandroid:backgrounddrawable/phone2_bgLinearLayoutandroid:layout_widthfill_parentandroid:layout_height0dipandroid:layout_weight1 /!-- 电话号码 --TextViewandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:textSizedimen/activity_phone_tvandroid:gravitycenterandroid:text{vm.phoneInfo}android:textStylebold /!-- 表格布局 --TableLayoutandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_alignParentBottomtrueandroid:layout_marginBottom16dip!-- 第一列 --TableRowandroid:layout_widthfill_parentandroid:layout_heightwrap_contentButtonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone1android:onClick{()-vm.appendNumber(String.valueOf(1))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone2android:onClick{()-vm.appendNumber(String.valueOf(2))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone3android:onClick{()-vm.appendNumber(String.valueOf(3))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number //TableRow!-- 第二列 --TableRowandroid:layout_widthfill_parentandroid:layout_heightwrap_contentButtonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone4android:onClick{()-vm.appendNumber(String.valueOf(4))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone5android:onClick{()-vm.appendNumber(String.valueOf(5))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone6android:onClick{()-vm.appendNumber(String.valueOf(6))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number //TableRow!-- 第3列 --TableRowandroid:layout_widthfill_parentandroid:layout_heightwrap_contentButtonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone7android:onClick{()-vm.appendNumber(String.valueOf(7))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone8android:onClick{()-vm.appendNumber(String.valueOf(8))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone9android:onClick{()-vm.appendNumber(String.valueOf(9))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number //TableRow!-- 第4列 --TableRowandroid:layout_widthfill_parentandroid:layout_heightwrap_contentButtonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phonexinandroid:onClick{()-vm.appendNumber(string/phonexin)}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phone0android:onClick{()-vm.appendNumber(String.valueOf(0))}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number /Buttonandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/phonejinandroid:onClick{()-vm.appendNumber(string/phonejin)}android:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_number //TableRow!-- 第5列 --TableRowandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_marginTop6dipLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:orientationvertical!-- 清空 --Buttonandroid:layout_width40dpandroid:layout_height40dpandroid:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_minandroid:layout_gravitycenterandroid:onClick{()-vm.clear()}android:layout_margin6dip //LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:orientationvertical!-- 拨打 --ImageViewandroid:layout_width46dipandroid:layout_height46dipandroid:srcdrawable/phone_selector_callandroid:onClick{()-vm.callPhone()}android:layout_gravitycenter //LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:layout_weight1android:orientationvertical!-- 删除一个字符 --Buttonandroid:layout_width60dpandroid:layout_heightwrap_contentandroid:textSizedimen/activity_phone_btandroid:backgrounddrawable/phone_selector_backspaceandroid:layout_gravitycenterandroid:onClick{()-vm.backspaceNumber()}//LinearLayout/TableRow/TableLayout/LinearLayout /layoutMainViewModel.java package com.example.jetpack_java2;import android.app.Application; import android.content.Context; import android.content.Intent; import android.net.Uri;import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.MutableLiveData;/*** AndroidViewModel 与 ViewModel的区别是 AndroidViewModel自带application环境*/ public class MainViewModel extends AndroidViewModel {// 传统方式的数据// private String phoneInfo ; // 目前无法实现感应功能// 实现感应功能 LiveData DataBindingprivate MutableLiveDataString phoneInfo;// 环境private Context mContext;public MainViewModel(NonNull Application application) {super(application);mContext application;}// 把数据暴露出去 给布局用public MutableLiveDataString getPhoneInfo() {if (phoneInfo null) {phoneInfo new MutableLiveData();// 设置默认值phoneInfo.setValue();}return phoneInfo;}/*** 输入* param number*/public void appendNumber(String number) {phoneInfo.setValue(phoneInfo.getValue() number);}/*** 删除*/public void backspaceNumber() {int length phoneInfo.getValue().length();if (length 0) {phoneInfo.setValue(phoneInfo.getValue().substring(0, length - 1));}}/*** 清空*/public void clear() {phoneInfo.setValue();}/*** 拨打*/public void callPhone() {Intent intent new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse(tel: phoneInfo.getValue()));// 非Activity启动拨号 或者是 非Activity启动任何的 startActivity都会崩溃intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(intent);} } MainActivity.java package com.example.jetpack_java2;import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders;import android.os.Bundle; import android.view.View;import com.example.jetpack_java2.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {private ActivityMainBinding dataBinding; // DataBinding初始化private MainViewModel mainViewModel; // MainViewModel初始化Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main);dataBinding DataBindingUtil.setContentView(this, R.layout.activity_main);// 旧版本的写法// mainViewModel ViewModelProviders.of(this).get(MainViewModel.class);// 下面是新版本的写法// 如果MainViewModel extends ViewModel// mainViewModel new ViewModelProvider(this,// new ViewModelProvider.NewInstanceFactory()).get(MainViewModel.class);// 如果MainViewModel extends AndroidViewModelmainViewModel new ViewModelProvider(getViewModelStore(),new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(MainViewModel.class);dataBinding.setVm(mainViewModel);dataBinding.setLifecycleOwner(this); // DataBinding与LiveData建立感应} }AndroidManifest.xml ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.jetpack_java2uses-permission android:nameandroid.permission.READ_CONTACTS/uses-permission android:nameandroid.permission.WRITE_CONTACTS/uses-permission android:nameandroid.permission.CALL_PHONE/applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/AppThemeactivity android:name.MainActivityintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application/manifest2. kotlin版本 MainViewModel.kt package com.example.jetpack_kotlinimport android.app.Application import android.content.Context import android.content.Intent import android.net.Uri import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveDataclass MainViewModel(application : Application) : AndroidViewModel(application) {// LiveData数据有感应val phoneInfo by lazy { MutableLiveDataString() }init {phoneInfo.value // 设置默认值}// 定义一个环境var mContext : Context application/*** 输入*/fun appendNumber(number : String) {phoneInfo.value phoneInfo.value number}/*** 删除*/fun backspaceNumberr() {var length phoneInfo.value?.length ?: 0if (length 0) {phoneInfo.value phoneInfo.value?.substring(0, length - 1)}}/*** 清空*/fun clear() {phoneInfo.value }/*** 拨号*/fun callPhone() {var intent Intent()intent.action Intent.ACTION_CALLintent.data Uri.parse(tel: phoneInfo.value)intent.flags Intent.FLAG_ACTIVITY_NEW_TASKmContext.startActivity(intent)} }MainActivity.kt package com.example.jetpack_kotlinimport androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import com.example.jetpack_kotlin.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() {var binding : ActivityMainBinding ? nullvar viewModel : MainViewModel ? nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// setContentView(R.layout.activity_main)binding DataBindingUtil.setContentView(this, R.layout.activity_main)viewModel ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory(application)).get(MainViewModel::class.java)binding?.vm viewModel// DataBinding 与 LiveData 建立感应binding?.lifecycleOwner this} }
http://wiki.neutronadmin.com/news/260187/

相关文章:

  • wordpress一步步建企业网站外贸销售怎么找客户
  • 做国内打不开的网站吗徐州seo排名公司
  • 阿里云安装wordpress数据库错误网站seo如何做
  • 销售类网站开发架构阳朔县建设规划局网站
  • 珠海做网站的公司网站建设需要哪些技术
  • 中山网站建设是什么安徽城乡建设厅网站
  • 网站制作top用阿里云怎么建网站
  • 哪些网站会盗取湛江市住房和城乡建设网站
  • 潍坊网站建设外包一哥优购物官方网站
  • 校园网站做自己的广告平面设计学习
  • 网站域名和空间做网页和网站有什么区别吗
  • 在线做海报网站企业网站功能
  • 西宁建设网站东莞网络营销公司
  • 上海建网站网络广告怎么做
  • 安监局网站做模拟邓州网站推广
  • 甘肃泾川县门户网站两学一做No商业网站建设
  • 西宁seo网站安徽网页设计培训
  • 国字型网站建设布局wordpress api下载文件
  • 设计班级网站建设网站建设及模板使用教程
  • 简单网站建设哪家便宜网络营销的特征
  • 网站开发教程百度云浏览器网站大全免费
  • 在上海做兼职在哪个网站好电商网站建设免费
  • 辽宁东方建设工程有限公司网站丰县建设局规划局网站
  • 建设网站的企业多少钱南京做网站牛
  • 网站建设与管理是什么电商运营主要负责什么
  • 安徽省建设质量安全协会网站wordpress图片排版
  • 北京做网络工程公司的网站网站框架怎么建设
  • 开发公司网站建设微平台推广
  • wordpress好难长沙正规竞价优化推荐
  • 网站建设是前端的吗装修案例欣赏