ArrayAdapter
最简单的Adapter,表项中只含有文本信息的情况
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listview1">
</ListView>
</LinearLayout>
public class MyListViewActivity extends AppCompatActivity {
private ListView mListView;
private String []array={"1","2","3","4"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
ArrayAdapter<String> adapter=new ArrayAdapter(this,android.R.layout.activity_list_item,array);
mListView=(ListView)findViewById(R.id.listview1);
mListView.setAdapter(adapter);
}
}
SimpleAdapter
比ArrayAdapter复杂,每一个列表项中含有不同的子控件
XML文件相同可参见上下例
public class MyListViewActivity extends AppCompatActivity {
private ListView mListView;
private String []array={"1","2","3","4"};
private List <HashMap<String,String>>mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
// ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.activity_list_item,array);
mListView=(ListView)findViewById(R.id.listview1);
//LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
// LayoutInflater inflater=getLayoutInflater();
initData();
SimpleAdapter adapter=new SimpleAdapter(this,mData,R.layout.list_simple_item,
new String[]{"name","age","sex","hobby"},new int[]{R.id.name,R.id.age,R.id.sex,R.id.hobby});
mListView.setAdapter(adapter);
//mListView.setOnItemLongClicListener();长按点击事件
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HashMap<String,String>itemData=mData.get(position);
Log.d("data",""+itemData.get("name"));
}
});
}
public void initData(){
mData=new ArrayList();
HashMap<String,String>zhangsan=creatHashMap("张三","20","男","打篮球");
HashMap<String,String>lisi=creatHashMap("李四","20","男","吃");
HashMap<String,String>wangwu=creatHashMap("王五","20","男","玩");
HashMap<String,String>zhaoliu=creatHashMap("赵六","20","男","睡觉");
}
public HashMap<String,String>creatHashMap(String name,String age,String sex,String hobby){
HashMap<String,String>zhangsan=new HashMap<>();
zhangsan.put("name",name);
zhangsan.put("sge",age);
zhangsan.put("sex",sex);
zhangsan.put("hobby",hobby);
return zhangsan;
}
}
SimpleCursorAdapter
把从数据库查出的数据适配给AdapterView
自定义Adapter(最重要最常用)
BaseAdapter5个方法
MVC模式
M是数据V是adapter中getview中的view C是listview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名"
android:layout_margin="10dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄"/>
<TextView
android:id="@+id/sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别"/>
</LinearLayout>
<TextView
android:id="@+id/hobby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好"
android:layout_margin="10dp"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listview1">
</ListView>
</LinearLayout>
StudentAdapter
public class StudentAdapter extends BaseAdapter {
private List<Student> mData ;
private LayoutInflater mInflater;
public StudentAdapter( LayoutInflater Inflater,List<Student> data){
//将inflater和数据传递到适配器
mInflater=Inflater;
mData=data;
}
@Override
public int getCount() {
//得到ListView将要显示的数据的条数
return mData.size();
}
@Override
public Object getItem(int position) {
//返回索引
return position;
}
@Override
public long getItemId(int position) {
//返回索引
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//LauoutInflater
View view=mInflater.inflate(R.layout.list_simple_item,null);
Student student=mData.get(position);
TextView name= (TextView) view.findViewById(R.id.name);
TextView age= (TextView) view.findViewById(R.id.age);
TextView sex= (TextView) view.findViewById(R.id.sex);
TextView hobby= (TextView) view.findViewById(R.id.hobby);
ImageView img=(ImageView)view.findViewById(R.id.img);
name.setText(student.getName());
age.setText(student.getAge());
sex.setText(student.getSex());
hobby.setText(student.getHobby());
img.setImageResource(student.getImg());
return view;
}
}
MyBaseAdapterActivity
public class MyBaseAdapterActivity extends AppCompatActivity {
private ListView mListView;
private List<Student> mData;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
mListView=(ListView)findViewById(R.id.listview1);
//LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
LayoutInflater inflater=getLayoutInflater();
initData();
StudentAdapter adapter=new StudentAdapter( inflater,mData);
mListView.setAdapter(adapter);
}
public void initData(){
mData=new ArrayList<>();
Student zhangsan=new Student("张三","21","男","打篮球",R.mipmap.baby);
Student lisi=new Student("张三","21","男","打篮球",R.mipmap.baby);
Student wangwu=new Student("张三","21","男","打篮球",R.mipmap.baby);
Student zhaoliu=new Student("张三","21","男","打篮球",R.mipmap.baby);
mData.add(zhangsan);
mData.add(lisi);
mData.add(wangwu);
mData.add(zhaoliu);
}
}
Student
public class Student extends HashMap<String, String> {
private String name;
private String sex;
private String age;
private String hobby;
private int img;
public Student(String name,String sex,String age, String hobby,int img){
this.name=name;
this.age=age;
this.sex=sex;
this.hobby=hobby;
this.img=img;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
结果如下