一、实现的步骤
1.封装数据
2.创建数据对应的实例,放入list
3.用for循环打印封装的数据
4.绑定listview控件
5.创建适配器,继承BaseAdapter,将数据放入适配器

6.创建构造方法,将该数据和上下文放入MyAdapter内
7.在单元格布局方法内,将布局放入
8.设置点击方法,点点击某个条目之后,显示对应的消息提醒
二、总体实现代码
1.布局activity_main.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" > <ListView android:id="@+id/lv_item" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
2.布局list_item.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="110dp" android:orientation="vertical" > <TextView android:id="@+id/tv_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:lines="2" android:ellipsize="end" android:textSize="25dp" android:padding="8dp" android:textColor="#A81C122C" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="end" > <TextView android:id="@+id/tv_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="18dp" android:layout_marginRight="15dp" android:textColor="#E62A50" /> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="16:55" android:textSize="18dp" android:layout_marginRight="8dp" android:textColor="#E62A50" /> </LinearLayout></LinearLayout>
3.StudyDataBean文件代码
package com.example.mylistview.bean;public class StudyDataBean { //1.定义数据,从网上获取该数据(封装) private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
4.MainActivity文件代码
package com.example.mylistview;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import com.example.mylistview.adapter.MyAdapter;import com.example.mylistview.bean.StudyDataBean;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { //2.创建数据实例 private List<StudyDataBean> list=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //5.绑定该ListView的控件 ListView lv_item = findViewById(R.id.lv_item); //3.利用for循环打印该数据 for (int i=0;i<50;i++){ //4.创建该封装的实例,将该数据放进list StudyDataBean studyDataBean=new StudyDataBean(); studyDataBean.setName("学习" + i); list.add(studyDataBean); } //7.将数据放进适配器 lv_item.setAdapter(new MyAdapter(list,this)); //15.设置点击方法,当点击到某个item,即弹出消息提醒 lv_item.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "点击了学习" +position, Toast.LENGTH_SHORT).show(); } }); }}
5.MyAdapter文件代码
package com.example.mylistview.adapter;import android.content.Context;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.mylistview.R;import com.example.mylistview.bean.StudyDataBean;import java.util.List; //6.创建辅助类,通过继承,实现每个方法public class MyAdapter extends BaseAdapter { //8.创建构造方法,将数据源和上下文放入MyAdapter内 private List<StudyDataBean> list; private Context context; public MyAdapter(List<StudyDataBean> list, Context context) { this.list = list; this.context = context; } //9.打印条数,是数据的长度 @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } //10.id就是对应数据的位置 @Override public long getItemId(int position) { return position; } //11.返回每一个条目 @Override public View getView(int position, View convertView, ViewGroup parent) { /* 12.将布局渲染给convertView,因为convertView会复用,为了防止不断创建, 所以进行一个判断,通过判断,若该单元格布局为空,则显示该布局, */ if (convertView==null) { convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); } //13.通过控件绑定拿到单元格布局内的控件 TextView tv_item = convertView.findViewById(R.id.tv_item); //14.获取该item的值 tv_item.setText(list.get(position).getName()); Log.e("he","getView:"+position); return convertView; }}
6.效果图<br />