1.适配器的作用
把复杂的数据填充在指定的视图界面上。
ArrayAdapter(数组适配器):绑定简单的数据。
SimpleAdapter(简单适配器):绑定复杂的数据。(一些特定的泛型)
适配器是数据源和视图界面的桥梁。
建立过程:新建适配器——添加数据源到适配器——视图加载适配器。
2.java源文件的编写
package com.example.demo_shopping;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private ListView listview; //1.声明
private ArrayAdapter<String> arr_adapter; //2.声明适配器
private SimpleAdapter sim_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview =(ListView) findViewById(R.id.listview1); //3.数据与视图的绑定
String []arr_data = {"百度","谷歌","搜狐","火狐"}; //4.设置数据源
//5.生成适配器 参数:上下文,列表对应的布局文件,数据源
arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, arr_data);
//视图加载适配器
listview.setAdapter(arr_adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
3.xml视图的编写
<RelativeLayout 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=".MainActivity" >
<ListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ListView>
</RelativeLayout>
4.效果展示
5.采用simpleadapter实现图文listview
xml:
<?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="vertical" >
<ImageView
android:id="@+id/imageview1"
android:layout_marginTop="200dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="145dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textview1"
android:layout_marginLeft="145dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="demo"
android:textColor="#000"
android:textSize="20dp" />
</LinearLayout>
package com.example.demo_shopping;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private ListView listview; //1.声明
private ArrayAdapter<String> arr_adapter; //2.声明适配器
private SimpleAdapter sim_adapter;
private List<Map<String, Object>>datalist; //5.数据源声明
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datalist =new ArrayList<Map<String,Object>>();
getdata();
//3.绑定数据
listview =(ListView) findViewById(R.id.listview1);
//4.新建一个数据适配器
//参数介绍 (上下文,数据源:map组成的list的集合map的键必须包含from所指定的键,列表项的布局文件,from中的键,绑定数据视图的id)
sim_adapter = new SimpleAdapter(this, getdata(), R.layout.layout , new String[]{"imageview1","textview1"}, new int[]{R.id.imageview1,R.id.textview1});
}
private List<? extends Map<String, ?>> getdata() {
// TODO Auto-generated method stub
for(int i= 0;i<20;i++){
Map<String, Object>map = new HashMap<String, Object>();
map.put("imageview1",R.drawable.ic_launcher);
map.put("textview1", "百度"+i);
datalist.add(map);
}
return datalist;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
<RelativeLayout 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=".MainActivity" >
<ListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</RelativeLayout>