一、效果图
二、代码
1、在活动中定义图片+标题信息模型类
//定义图片和标题类
class Members {
//图片
public int imageId;
//标题
public String itemName;
//构造函数
public Members(int imageId, String name)
{
//赋值图片
this.imageId = imageId;
//赋值标题
this.itemName = name;
}
}
2、导入图片和定义两个.xml文件,用来自定列表的现实行item
第一个addexam_list_item.xml
代码
<ImageView
android:id="@+id/addexam_list_icon"
android:layout_width="40dp"
android:layout_height="40dp"
app:srcCompat="@drawable/login_04" />
<TextView
android:id="@+id/addexam_list_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:text="测试数据"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView"
android:layout_marginRight="50dp"
android:textAlignment="textEnd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=">" />
第二个addexam_list_item_tag.xml
代码
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:background="@color/white"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/addexam_list_item_text"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:gravity="center_vertical"
android:text="标题"
android:textColor="@color/black" />
3、自定义ArrayAdapter
代码
//自定义适配器
private class MyAdapter extends ArrayAdapter<Members> {
//构造函数
public MyAdapter(@NonNull Context context, ArrayList members) {
super(context, 0, members);
}
//获取视图方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//判断第一个分组标题
if(position == 0) {
//获取第一行标题
Members members = getItem(position);
//连接视图
convertView = LayoutInflater.from(getContext()).inflate(R.layout.addexam_list_item_tag, parent, false);
//连接标题
TextView tvName = (TextView) convertView.findViewById(R.id.addexam_list_item_text);
//赋值标题文本
tvName.setText(members.itemName);
//判断第二个分组标题
}else if(position == 5) {
//获取第一行标题
Members members = getItem(position);
//连接视图
convertView = LayoutInflater.from(getContext()).inflate(R.layout.addexam_list_item_tag, parent, false);
//连接标题
TextView tvName = (TextView) convertView.findViewById(R.id.addexam_list_item_text);
//赋值标题文本
tvName.setText(members.itemName);
//判断第三个分组标题
}else if(position == 9){
//获取第一行标题
Members members = getItem(position);
//连接视图
convertView = LayoutInflater.from(getContext()).inflate(R.layout.addexam_list_item_tag, parent, false);
//连接标题
TextView tvName = (TextView) convertView.findViewById(R.id.addexam_list_item_text);
//赋值标题文本
tvName.setText(members.itemName);
}
//每组内的标题和图片
else {
//获取第一行标题
Members members = getItem(position);
//连接视图
convertView = LayoutInflater.from(getContext()).inflate(R.layout.addexam_list_item, parent, false);
//连接标题
TextView tvName = (TextView) convertView.findViewById(R.id.addexam_list_item_text);
//连接图片
ImageView image = (ImageView) convertView.findViewById(R.id.addexam_list_icon);
//赋值标题
tvName.setText(members.itemName);
//赋值图片
image.setImageResource(members.imageId);
}
//返回视图
return convertView;
}
}
4、添加具体的图片和标题信息
第一方法
//添加图片和标题函数
public void addMembers()
{
Members member1 = new Members(R.drawable.i_1, "分类");
arrayOfMembers.add(member1);
Members member2 = new Members(R.drawable.i_2, "待办");
arrayOfMembers.add(member2);
Members member3 = new Members(R.drawable.i_3, "处理");
arrayOfMembers.add(member3);
Members member4 = new Members(R.drawable.i_4, "完成");
arrayOfMembers.add(member4);
Members member5 = new Members(R.drawable.i_5, "列表");
arrayOfMembers.add(member5);
Members member6 = new Members(R.drawable.i_6, "数据");
arrayOfMembers.add(member6);
Members member7 = new Members(R.drawable.i_7, "报表");
arrayOfMembers.add(member7);
Members member8 = new Members(R.drawable.i_8, "备份");
arrayOfMembers.add(member8);
Members member9 = new Members(R.drawable.i_9, "导入");
arrayOfMembers.add(member9);
Members member10 = new Members(R.drawable.i_10, "工具");
arrayOfMembers.add(member10);
Members member11 = new Members(R.drawable.i_10, "天气");
arrayOfMembers.add(member11);
Members member12 = new Members(R.drawable.i_10, "天气");
arrayOfMembers.add(member12);
Members member13 = new Members(R.drawable.i_10, "天气");
arrayOfMembers.add(member13);
Members member14 = new Members(R.drawable.i_10, "天气");
arrayOfMembers.add(member14);
Members member15 = new Members(R.drawable.i_10, "天气");
arrayOfMembers.add(member15);
}
然后在Activity中的onCreate()方法中加载方法
5、添加适配器
代码
//创建适配器
MyAdapter madapter = new MyAdapter(this, arrayOfMembers);
//表格添加适配器
listview.setAdapter(madapter);
//关联表格单击事件
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//测试事件
Toast.makeText(MainActivity.this, String.valueOf(l), Toast.LENGTH_SHORT).show();
}
});