안 드 로 이 드 기업 급 개발 데이터 바 인 딩 기술 분석
우선 데이터 바 인 딩 이 무엇 인지 알 아야 합 니까?왜 데이터 로 연결 합 니까?데이터 로 어떻게 연결 합 니까?문법 적 사용
간단 한 예 를 들 어 데이터 가 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 와 다 릅 니 다.이것 은 단지 클래스 를 불 러 오기 위 한 것 입 니 다.
<?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)@{} < < > &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
<?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 하면 됩 니 다.이상 은 이 글 의 전체 내용 에 대해 여러분 이 참고 하여 공부 할 때 모 르 는 부분 이 있 으 면 아래 의 게시판 에서 토론 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.