数据适配器
作用:
把复杂的数据(数组、链表、数据库、集合等)填充在指定视图界面上
分类:
1. ArrayAdapt(数组适配器):用于绑定格式单一的数据
数据源:数组和集合
2. SimpleAdapt(简单适配器):用于绑定格式复杂的数据
数据源,只能是特定泛型的集合
数据适配器是连接数据源与视图的桥梁
实现过程:新建适配器---------添加数据源
ArrayAdapt代码实现如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.kanzaki.learnarraylist.MainActivity">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
MainActivity信息
package com.example.kanzaki.learnarraylist;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private ListView listView;
//第一步新建一个ArrayAdapter的适配器
private ArrayAdapter<String>arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取listView控件
listView = (ListView) findViewById(R.id.list);
//第二部准备数据源,ArrayAdapt可以使用数组和集合两种
String[] str = new String[]{"item1","item2","item3","item4"};
/*
Arradapter中需传入3个信息
1.是上下文
2.布局文件,这边使用android系统自带的布局
3.数据源
*/
arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str);
<span style="white-space:pre"> </span>//第三部,加载视图
<span style="white-space:pre"> </span>listView.setAdapter(<span style="font-family: Arial, Helvetica, sans-serif;">arrayAdapter</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
SimpleAdapt代码实现
主布局
同上,略
listView视图布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/image"
android:src="@drawable/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity信息
package com.example.kanzaki.learnarraylist;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private ListView listView;
//第一步新建适配器
private SimpleAdapter simpleAdapter;
private List<Map<String, Object>> datalist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取listView控件
listView = (ListView) findViewById(R.id.list);
/*
SimpleAdapt中需传入3个信息
1.是上下文
2.布局文件
3.from&to:与Map对应的键-值对
*/
simpleAdapter = new SimpleAdapter(this,getData(), R.layout.array_list, new String[]{"pic", "text"}, new int[]{R.id.image, R.id.text});
//第三部,加载视图
listView.setAdapter(simpleAdapter);
//第二部 数据源
private List<Map<String, Object>> getData() {
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<String, Object>();
//为键值对赋值
map.put("pic", R.mipmap.ic_launcher);
map.put("text", "item" + i);
datalist.add(map);
}
return datalist;
}
}