Android Studio实现无需定义变量进行界面的操作

Android Studio实现无需定义变量进行界面的操作

初次见面,我加入了csdn这个大家庭,废话不多说了,我来献丑了

菜鸡货文,建议看看

文章目录

Android Studio实现无需定义变量进行界面的操作

前言

一 、不变的代码图

二、改进前代码图

三、改进后代码图

四、效果图

五、进行文件配置

六、界面代码的操作

七、源码

总结

**

前言

代码很简单,初学者可以看看哦,开始吧!

文章最后有源码哦
**

**
说明一下哦,效果图都是一样的 只是改进之后的代码更简单了
**

一 .不变的代码图

这是一个ViewModel的Java类在这里插入图片描述

**

二. 改进前代码图

Activity中的代码块 界面代码太简单了,这里就不添加了Activity中的
和上面的图是一起的,因为截屏不能截到全部,所以就分开了在这里插入图片描述

**

三. 改进后代码图

这里的DataBinding是Android Studio的一种架构 用了架构思想,所以代码变得更少了,但界面的功能比较多时,这种架构思想就体现出他的价值了在这里插入图片描述
**

四. 效果图

我已经实现加法,加到七了,而且你旋转屏幕的时候,Text View里面的内容也不会消失 我这里只实现了一个按钮了,其实两个和一个按钮区别不大,功能 能实现就好在这里插入图片描述

**
最重要的地方来了改进后的界面代码发生了变化,这才是重点
**

五. 进行文件配置

1.在Android Studio的Gradle Scripts目录下 找到build.gradle这个文件,然后在defaultConfig下面加入一个配置文件
如:加入我加粗的代码,当日志里面出现成功的时候就表示配置成功了。
defaultConfig {
applicationId "com.example.getpack"
minSdkVersion 28
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

** dataBinding{
** enabled true
** }
}

**
**

六. 界面代码的操作

**
1.点击灯泡 把data控件显示出来 然后再点Convert to data…
在这里插入图片描述
2.点了之后就会出现data控件了 如

3.文本控件与按钮控件的操作
我们这些小菜鸡平时都喜欢给每个控件一个id,以及名称,然后再到activity中去进行实例化变量,再通过控件的id进行操作,我们这次改变就是把这个省略了,直接在界面中进行值的交互。

TextView中
android:text="@{String.valueOf(data.number)}" //这里的text直接调用data里面的number属性,实现了值得可变化 因为这里的nubmber为integer的类型 所以要进行字符串的转换

Button中
android:onClick="@{()->data.add()}"//这里用到了onClick这个点击事件,后面调用了data里面的add方法实现数的加法操作

上面用到的data在activity里面进行了设置 就等同于data==Viewmodel这里的Java操作类

在这里提醒一下大家,最好不要把Activity的名称与类目相同,因为这样大部分都会报错的,小编就尝试了一下,后悔莫及啊

**

七.源码

1.改变前源码
Livedata.java

public class LivaData extends AppCompatActivity {

private TextView mTextView5;
private ImageButton mImageButton;
private ImageButton mImageButton2;
MyViewModel myViewModel;

//一个可以更好的对数据进行操作的控件
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_liva_data);
    initView();
    setData();
    setListener();
}

private void setListener() {
    mImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            myViewModel.addLikeNumber(1);//调用方法进行加一
        }
    });
    mImageButton2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            myViewModel.addLikeNumber(-1);
        }
    });
}

private void setData() {
    myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
    myViewModel.getLinkedNumber().observe(this, new Observer<Integer>() {
        @Override
        public void onChanged(Integer integer) {
            mTextView5.setText(String.valueOf(integer));
        }
    });
}

private void initView() {
    mTextView5 = (TextView) findViewById(R.id.textView5);
    mImageButton = (ImageButton) findViewById(R.id.imageButton);
    mImageButton2 = (ImageButton) findViewById(R.id.imageButton2);
}

}

2.改变后源码
ActivityBinding.java

public class ActivityBinding extends AppCompatActivity {
MyViewModel1 myViewModel1;
ActivityActivityBindingBinding binding;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    binding = DataBindingUtil.setContentView(this, R.layout.activity_activity_binding);
    myViewModel1 = ViewModelProviders.of(this).get(MyViewModel1.class);//判定ViewModel
    binding.setData(myViewModel1);
    binding.setLifecycleOwner(this);//设置数据
}

}

ViewModel.java
public class MyViewModel extends ViewModel {
public int number = 0;
private MutableLiveData LinkedNumber;//声明为Integer的LinkedNumber变量

public MutableLiveData<Integer> getLinkedNumber() {//得到数值
    if (LinkedNumber==null){//判断是否为空
        LinkedNumber = new MutableLiveData<>();//为空就实例化对象 对它进行赋值
        LinkedNumber.setValue(0);
    }
    return LinkedNumber;
}

public void addLikeNumber(int n){
    LinkedNumber.setValue(LinkedNumber.getValue() + n);
}

}

**

总结

希望这篇文章能对你们有所帮助,欢迎留言,谢谢。
**

猜你喜欢

转载自blog.csdn.net/zy2018_11_18/article/details/115026695
今日推荐