안 드 로 이 드 기업 급 개발 데이터 바 인 딩 기술 분석

이 글 은 글 을 보 내 는 방식 으로 데이터 바 인 딩 이 무엇 인지,데이터 바 인 딩 이 왜 필요 한 지 등 문 제 를 알려 안 드 로 이 드 기업 급 데이터 바 인 딩 기술 을 이해 하 는 데 도움 이 된다.
우선 데이터 바 인 딩 이 무엇 인지 알 아야 합 니까?왜 데이터 로 연결 합 니까?데이터 로 어떻게 연결 합 니까?문법 적 사용
간단 한 예 를 들 어 데이터 가 textview 컨트롤 에 연결 되 어 있 습 니 다.일반적인 상황 에서 우 리 는 하나의 레이아웃 파일 을 만 든 다음 에 레이아웃 파일 에 textview 를 넣 은 다음 에 Activity 를 통 해 findviewby id 를 얻 은 다음 에 대상.setText(")를 가 져 옵 니 다.지금 우 리 는 데이터 바 인 딩 을 배 웠 으 니 이전의 방법 을 사용 하지 않 아 도 된다.
라 이브 러 리 불 러 오기:이 물건 은 인터넷 에 있 는 물건 이기 때문에 우리 가 다운로드 해 야 합 니 다.

 dataBinding{
 enabled true
 }

1:먼저 레이아웃 파일 databing.xml 을 쓰 십시오.이 이름 은 마음대로 지 을 수 있 지만 뒤에 이 이름 을 사용 해 야 합 니 다.
여기 서 한 가지 설명 을 하려 면 먼저 자바 파일 을 만 듭 니 다.model 로 서 setget 방법 만 있 습 니 다.
Users.java

package databinding;


public class Users {

 public String name,address,email;
 private boolean vip;

 public boolean isVip() {
 return vip;
 }

 public void setVip(boolean vip) {
 this.vip = vip;
 }

 public String getAddress() {
 return address;
 }

 public void setAddress(String address) {
 this.address = address;
 }

 public String getEmail() {
 return email;
 }

 public void setEmail(String email) {
 this.email = email;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }
}
우 리 는 아래 의 레이아웃 파일 이 이전 과 다르다 는 것 을 알 수 있 습 니 다.우 리 는 먼저 layot 를 써 야 합 니 다.이 layot 는 우리 가 이전에 사 용 했 던 LinearLayout 와 다 릅 니 다.이것 은 단지 클래스 를 불 러 오기 위 한 것 입 니 다.
,그리고 데 이 터 는 Users 클래스 경 로 를 불 러 옵 니 다.name 은 그 에 게 번 호 를 지어 줍 니 다.그리고 TextView 할당 값 은@{user.name}입 니 다.현재 레이아웃 파일 은 다 썼 지만 값 이 없습니다.모든 값 은 Activity 에 적 혀 있 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
 <data>
 <variable
  name="user"
  type="databinding.Users"></variable>
 </data>
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">

 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:textColor="@{user.vip ? 0xffff00ff:0xff000000}"
  android:text="@{user.name}"
  android:textSize="25dp" />

 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@{user.address}"
  android:textSize="25dp" />

 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@{user.email}"
  android:textSize="25dp" />
 </LinearLayout>
</layout>
2:DataBActivity.java
레이아웃 을 불 러 오 는 방법 이 setContentView 인지 볼 수 있 습 니 다.대상 이 바 뀌 었 을 뿐 입 니 다.DatabingBinding 이라는 종 류 는 익숙 하지 않 습 니까?이것 은 우리 가 이전에 databing.xml 을 만 들 때 자동 으로 만 든 클래스 입 니 다.생 성 모드 는 xml 파일 이름(이니셜 대문자)+Binding 입 니 다.

 //DatabindingBing        , xml    (     )+Binding
 DatabindingBinding databindingBing=DataBindingUtil.setContentView(this, R.layout.databinding);
 Users users=new Users();
 users.setName("  ");
 users.setAddress("  ");
 users.setEmail("[email protected]");
 users.setVip(true);
 databindingBing.setUser(users);
 실행 결과:

ok,지금 다 나 왔 습 니 다.우 리 는 위 에서 다른 작업 을 할 수도 있 습 니 다.예 를 들 어 이사 앞 에 사용자 이름 을 추가 하고 베 이 징 앞 에 주 소 를 추가 합 니 다.이것 이 바로 문자열 의 연결 입 니 다.이 연결 은 예전 과 약간 다 릅 니 다.예 를 들 어:

<!--
1: @{} , `ceshi`, 。
"@{user.name + `(` +user.address + `)`}"
2:@{} , 、
(1)@{user.name == null ? user.address : user.name}// null , user.address
(2)@{user.name ?? user.address}// user.name null , null user.address
(3)@{} < &lt; > &rt;

-->
------------------------------------------

 

이렇게 하면 왼쪽 은 사용자 이름 이 고 오른쪽 은 장 삼 을 사용 하 는 것 을 나 타 낼 수 있다.데이터 바 인 딩 도 이러한 효 과 를 실현 할 수 있 습 니 다.왼쪽 에 있 는 레이아웃,오른쪽 에 있 는 레이아웃 만 있 으 면 됩 니 다.또한 같은 user 레이아웃 을 사용 합 니 다.두 번 만 불 러 옵 니 다.데 이 터 는 list 방식 으로 들 어 옵 니 다.데이터 바 인 딩 의 장점 이 많 습 니 다.예 를 들 어 listview 의 클릭 사건 은 item 의 클릭 에 대해 말 하지 않 습 니 다.어 려 운 점 은 보통 item 에 있 는 작은 컨트롤 입 니 다.우 리 는 인 터 페 이 스 를 다시 써 야 합 니 다.리 셋 방법 으로 클릭 되 었 다 는 것 을 증명 해 야 합 니 다.이 데 이 터 는 연결 이 간단 합 니 다.name 을 직접 추가 하면 어떤 사용자 이름 을 클릭 했 는 지 나타 납 니 다.다음은 코드 를 써 서 생각 을 정리 하 겠 습 니 다.구체 적 인 방법 은 다음 과 같 습 니 다.이것 은 위 코드 와 같은 부분 이 많 습 니 다.보 실 수 있 도록 다시 붙 여 드릴 게 요.
우선 model 류 Users 를 쓰 십시오.이 안에 클릭 이 벤트 를 추가 하여 컨 텍스트 용 view.getContext()를 가 져 왔 습 니 다.Users 에 대응 하 는 userlayot.xml 파일 하 나 는 총 xml 파일 로 두 열 user 를 불 러 옵 니 다.layot 파일 Activity 에서 데 이 터 를 불 러 옵 니 다 1:우선 model 류 Users 를 쓰 십시오.이 안에 클릭 이 벤트 를 추가 하여 컨 텍스트 용 view.getContext()를 가 져 옵 니 다.

package databinding;
import android.view.View;
import android.widget.Toast;
public class Users {
 public String name,address,email;
 private boolean vip;
 public boolean isVip() {
 return vip;
 }
 public void setVip(boolean vip) {
 this.vip = vip;
 }
 public String getAddress() {
 return address;
 }

 public void setAddress(String address) {
 this.address = address;
 }

 public String getEmail() {
 return email;
 }

 public void setEmail(String email) {
 this.email = email;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public void click1(View view){
 Toast.makeText(view.getContext(), "   :"+name, Toast.LENGTH_SHORT).show();
 }
 public boolean longClick1(View view){
 Toast.makeText(view.getContext(), "   :"+name, Toast.LENGTH_SHORT).show();
 return true;
 }


}
 2:Users 에 대응 하 는 userlayout.xml 파일
android:onClick="@{user.click 1}"은 이 벤트 를 클릭 하 는 것 입 니 다.주의해 야 할 것 은 click 1 은 Users.java 의 click 1()방법 입 니 다.이름 이 같 아야 합 니 다.길 게 눌 러 도 마찬가지 입 니 다.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
 <data>
 <variable
  name="user"
  type="databinding.Users"></variable>
 </data>
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">

 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:textColor="@{user.vip ? 0xffff00ff:0xff000000}"
  android:onClick="@{ user.click1}"
  android:text="@{user.name }"
  android:textSize="25dp" />

 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:onLongClick="@{ user.longClick1}"
  android:text="@{user.address}"
  android:textSize="25dp" />

 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@{user.email}"
  android:textSize="25dp" />
 </LinearLayout>
</layout>
3:하나의 총 xml 파일 로 두 열 user 를 불 러 옵 니 다.레이아웃 파일
여기 서 주의해 야 할 것 은 list 집합 에 들 어 갈 것 이기 때문에 variable 에서 type 을 바 꾸 고 클래스 를 불 러 올 것 입 니 다.이것 이 바로 규범 입 니 다.주의해 야 할 것 은 List의(<)기 호 는 쓸 수 없습니다.이렇게 전의 type="java.util.List<Users>    app:user="@{users[0]}"는 데 이 터 를 불 러 오 는 것 입 니 다.app:user 를 누 르 면 아무것도 나 오지 않 으 면 레이아웃 맨 위 에 xmlns:app="http://schemas.android.com/apk/res-auto"하면 돼 요.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">
 <data>
 <import type="databinding.Users"></import>
 <variable
  name="users"
  type="java.util.List<Users>"></variable>
 </data>
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:gravity="center"
 android:orientation="horizontal">
 <LinearLayout
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="match_parent">


  <include
  layout="@layout/user_layout"

  app:user="@{ users[0] }"></include>
 </LinearLayout>


 <LinearLayout
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="match_parent">


  <include
  layout="@layout/user_layout"

  app:user="@{ users[1] }"></include>
 </LinearLayout>
 </LinearLayout>
</layout>
 4:Activity 에서 구체 적 인 조작

 //DatabindingBing        , xml    (     )+Binding
 DatabindingBinding databindingBinding=DataBindingUtil.setContentView(this, R.layout.databinding);
 Users users=new Users();
 users.setName("   :");
 users.setAddress("  :");
 users.setEmail("E-mail:");
 users.setVip(true);

 Users users1=new Users();
 users1.setName("  ");
 users1.setAddress("  ");
 users1.setEmail("[email protected]");
 users1.setVip(true);
 List<Users> list=new ArrayList<>();
 list.add(users);
 list.add(users1);
 databindingBinding.setUsers(list);
여기에 또 하나의 문제 가 있 습 니 다.만약 당신 이 새로 쓴 자바 파일 이나 xml 파일 이 라면 문제 가 없 을 것 입 니 다.그러나 첫 번 째 예 를 들 어 수정 한 것 이 라면 가방 경 로 를 찾 을 수 없 을 수도 있 습 니 다.이것 도 괜 찮 습 니 다.다시 clean 하면 됩 니 다.

이상 은 이 글 의 전체 내용 에 대해 여러분 이 참고 하여 공부 할 때 모 르 는 부분 이 있 으 면 아래 의 게시판 에서 토론 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기