下载一个图片 设置到ImageView
转载请注明出处:
http://blog.csdn.net/iwanghang/article/details/53213811
这里使用Glide的jar包 代替Volley进行解析
MainAcitivy.java:
package com.iwanghang.databinding;
import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.iwanghang.databinding.databinding.ActivityMainBinding;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
/**
* 用DataBinding方式载入layout
*/
ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
User user = new User();
user.setName("用户名");
user.setNickName("昵称");
//user.setNickName(null);
user.setLevel(4);
user.setEmail("abc@123.com");
user.setVip(true);
user.setIcon("http://avatar.csdn.net/6/5/8/1_iwanghang.jpg");
User user1 = new User();
user1.setName("用户名1");
user1.setNickName("昵称1");
user1.setLevel(2);
user1.setEmail("def@456.com");
user1.setVip(false);
List<User> users = new ArrayList<>();
users.add(user);
users.add(user1);
binding.setUsers(users);
}
}
User.java:
package com.iwanghang.databinding;
import android.view.View;
import android.widget.Toast;
public class User {
private String name;
private String nickName;
private String email;
private int level;
private boolean vip;
private String icon;
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public boolean isVip() {
return vip;
}
public void setVip(boolean vip) {
this.vip = vip;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
/**
* 设置点击事件
*/
public void clickName(View view){
Toast.makeText(view.getContext(), "clickName:" + name, Toast.LENGTH_SHORT).show();
}
public boolean longClickName(View view){
Toast.makeText(view.getContext(), "longClickName", Toast.LENGTH_SHORT).show();
return true;
}
}
Utils.java:
package com.iwanghang.databinding;
import android.databinding.BindingAdapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
/**
* DataBinding 数据转换类
*/
public class Utils {
// 下载一个图片 设置到ImageView
@BindingAdapter({"imageUrl"})
public static void loadImage(ImageView view, String url){
if (url == null){
view.setImageResource(R.mipmap.ic_launcher);
} else {
// Glide代替Volley
Glide.with(view.getContext()).load(url).into(view);
}
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<!--改造后的layout-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--数据模块-->
<data>
<!--只有一个user-->
<!--<variable-->
<!--name="user"-->
<!--type="com.iwanghang.databinding.User"/>-->
<!--使用users-->
<import type="com.iwanghang.databinding.User"/>
<variable
name="users"
type="java.util.List<User>"/>
</data>
<!--样式模块-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
tools:context="com.iwanghang.databingding.MainActivity">
<include layout="@layout/user_layout"
app:user="@{ users[0] }"/>
<include layout="@layout/user_layout"
app:user="@{ users[1] }"/>
</LinearLayout>
</layout>
user_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<!--改造后的layout-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--数据模块-->
<data>
<variable
name="user"
type="com.iwanghang.databinding.User"/>
</data>
<!--样式模块-->
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context="com.iwanghang.databingding.MainActivity">
<ImageView
app:imageUrl="@{ user.icon }"
android:layout_width="100dp"
android:layout_height="100dp" />
<TextView
android:onClick="@{ user.clickName }"
android:onLongClick="@{ user.longClickName }"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@{ user.vip ? 0xffff0000 : 0xff0000}"
android:text="@{ user.nickName + `(` + user.name + `)` }" />
<!--如果nickName为空,显示name;如果如果nickName非空,显示nickName。下面2个写法都可以-->
<!--android:text="@{ user.nickName == null ? user.name : user.nickName }"-->
<!--android:text="@{ user.nickName ?? user.name }"-->
<TextView
android:text="@{ user.nickName ?? user.name }"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{ user.email }" />
<!--如果level<3,颜色为00ff00,否则,颜色为0000ff-->
<!--@{ user.level < 3 ? 0xff00ff00 : 0xff0000ff }-->
<!--@{ user.level < 3 ? 0xff00ff00 : 0xff0000ff }-->
<!--需要写成第二行的形式,因为“<”需要转义成“<”-->
<TextView
android:textColor="@{ user.level < 3 ? 0xff00ff00 : 0xff0000ff }"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="level" />
</LinearLayout>
</layout>
转载请注明出处:
http://blog.csdn.net/iwanghang/article/details/53213811
欢迎移动开发爱好者交流 沈阳或周边城市公司有意开发Android,请与我联系 联系方式 微信:iwanghang QQ:413711276 邮箱:iwanghang@qq.com
转载请注明原文地址: https://ju.6miu.com/read-678681.html