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>