前言:
不论哪一种adapter,首先要有一个list,相当于书架,分为一层一层的结构。
//在这个list中不要写其他东西
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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.my.administrator.mywidget.MyListView">
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ListView>
</RelativeLayout>
并且在activity中要 setContentView(R.layout.activity_my_list_view);
1、ArrayAdapter
<1>先建一个layout_view
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.my.administrator.mywidget.MyListView">
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ListView>
</RelativeLayout>
<2>
在activity中
<3>layout>>item_list
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"//注意这个地址一定不能改
android:textAppearance="?android:attr/textAppearanceSmall"
android:paddingTop="2dip"
android:paddingBottom="3dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ff0000"//设置文本颜色
/>
<4>运行activity
2、SimpleAdapter
<1>list
//同上面例2的1代码
<2>layout下activity_list
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/list_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄" />
<TextView
android:id="@+id/list_sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别" />
</LinearLayout>
<TextView
android:id="@+id/list_hobby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好" />
</LinearLayout>
<3>activity中部分代码
private ListView mListerView;
private List<HashMap<String,String>> mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list_view);
mListerView = (ListView) findViewById(R.id.listview);
initData();
SimpleAdapter adapter = new SimpleAdapter(this,mData,R.layout.activity_list,new String[]{"name","age","sex","hobby"},
new int[]{R.id.list_name,R.id.list_age,R.id.list_sex,R.id.list_hobby});
mListerView.setAdapter(adapter);
//下面是点击事件,不允许用OnClickLisnter
mListerView.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")+itemData.get("age")+itemData.get("sex")+itemData.get("hobby"));
}
});
}
private void initData() {
mData = new ArrayList<>();
HashMap<String, String> zhangsan = creatHashMap("张三", "20", "男", "篮球");
mData.add(zhangsan);
HashMap<String, String> lisi = creatHashMap("李四", "20", "男", "爱好书法");
mData.add(lisi);
HashMap<String, String> wangwu = creatHashMap("王五", "20", "女", "爱好听歌");
mData.add(wangwu);
}
private HashMap<String, String> creatHashMap(String name, String age, String sex, String hobby) {
HashMap<String, String> zhangsan = new HashMap<>();
zhangsan.put("name", name);
zhangsan.put("age", age);
zhangsan.put("sex", sex);
zhangsan.put("hobby", hobby);
return zhangsan;
}
2、BaseAdapter
<1>同以上的步骤一代码
<2>在layout-list中添加ImageView
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp" />
<3>新建包modle,在其下新建Student类
public class Student {
private String name;
private String age;
private String sex;
private String hobby;
private int img;
public Student(String name,String age, String sex,String hobby, int img) {
this.name = name;
this.age = age;
this.sex = sex;
this.hobby = hobby;
this.img = img;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getHobby() {
return hobby;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
}
<4>新建包adapter,在其下新建StuAdapter
public class StudentAdapter extends BaseAdapter {
private List<Student> mData;
private LayoutInflater mInflater;
public StudentAdapter(LayoutInflater inflater, List<Student> mData) {//构造器
this.mInflater = inflater;
this.mData = mData;
}
@Override
public int getCount() {
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) {//这个方法是关键
View view = mInflater.inflate(R.layout.activity_list, null);//对应activity—list中的属性
Student student = mData.get(position);
ImageView imageView = (ImageView) view.findViewById(R.id.image);//付属性
TextView textView_name = (TextView) view.findViewById(R.id.list_name);
TextView textView_age = (TextView) view.findViewById(R.id.list_age);
TextView textView_sex = (TextView) view.findViewById(R.id.list_sex);
TextView textView_hobby = (TextView) view.findViewById(R.id.list_hobby);
textView_name.setText(student.getName());//添加属性
textView_age.setText(student.getAge());
textView_sex.setText(student.getSex());
textView_hobby.setText(student.getHobby());
imageView.setImageResource(student.getImg());
return view;
}
}
<5>activity中的部分代码
public class MyListView extends AppCompatActivity {
private ListView mListerView;
private List<Student> mData;
private StudentAdapter mStudentAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list_view);
mListerView = (ListView) findViewById(R.id.listview);
LayoutInflater inflater = getLayoutInflater();
initData();
mStudentAdapter = new StudentAdapter(inflater, mData);
mListerView.setAdapter(mStudentAdapter);
}
private void initData() {
mData = new ArrayList<>();
Student zhangsan = new Student("张三", "18", "男", "爱好篮球", R.mipmap.shuai);
Student wanghong = new Student("王红", "22", "女", "爱好唱歌", R.mipmap.meinv);
Student xiaoli = new Student("小丽", "22", "女", "爱好跳舞", R.mipmap.meinv2);
mData.add(zhangsan);
mData.add(wanghong);
mData.add(xiaoli);
}
最终界面