Android ListView is customized with ArrayAdapter+grouping+Item

1. Rendering
Please add image description
2. Code
1. Define the picture + title information model class in the activity
Please add image description
//Define the picture and title
class class Members { //Picture public int imageId; //Title public String itemName;



//构造函数
public Members(int imageId, String name)
{
    //赋值图片
    this.imageId = imageId;
    //赋值标题
    this.itemName = name;

}

}
2. Import pictures and define two .xml files to customize the actual row item of the list. Please add image description
The first addexam_list_item.xml
Please add image description
code

<?xml version="1.0" encoding="utf-8"?>

<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=">" />

The second addexam_list_item_tag.xml
Please add image description
code

<?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=“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. Custom ArrayAdapter
code
// Custom adapter

private class MyAdapter extends ArrayAdapter<Members> {

//Constructor
public MyAdapter(@NonNull Context context, ArrayList members) { super(context, 0, members); }

//Get the view method
@Override
public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub //Determine the first group title 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);

//Assign title text
tvName.setText(members.itemName);

//判断第二个分组标题

}else if(position == 5) {

//Get the first row title
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){ //Get the first row title 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);

}
//Titles and pictures in each group
else { //Get the first row of titles 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. Add specific picture and title information
First method
//Add picture and title function
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);


}

Then load method 5 in the onCreate() method in Activity
Please add image description
. Add adapter
code
//Create adapter
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();

        }
    });

Please add image description

Guess you like

Origin blog.csdn.net/GUOZIJUN01/article/details/125834249