之前的文章介紹了DataBinding最基本的使用,[DataBinding的簡單使用]http://www.lxweimin.com/p/6d2c63e86de6。這次主要是DataBinding的如何設置集合數據。
設置集合數據,比如List和Map(這次我們使用的是import的方式導入)
1.在布局中的配置(注意使用泛型的方式)
<data>
<import type="java.util.ArrayList" />
<import type="java.util.Map" />
<!--集合的定義(<String規定了集合的泛型是String,相當于ArrayList<String>)-->
<variable
name="list"
type="ArrayList<String>" />
<!--<String,String>相當于Map<String,String>-->
<variable
name="map"
type="Map<String,String>" />
</data>
2.在Activity中添加數據的使用
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//獲取binding
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
//Map集合類型的數據
Map<String, String> map = new HashMap<>();
map.put("name", "wu");
map.put("age", "18");
binding.setMap(map);
//List集合類型的數據
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
binding.setList(list);
}
}
3.在TextView中使用list和map中的數據(注意里面的key的符號)
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--Map獲取值的時候對應的`age`為key-->
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@{map.get(`age`)}" />
<!--List獲取值的時候對應的1為position-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_name"
android:layout_centerHorizontal="true"
android:text="@{list.get(1)}" />
</RelativeLayout>
下一篇文章DataBinding設置監聽http://www.lxweimin.com/p/da4e72a9885c