一、ListView基本使用
- 在XML布局文件中文件中,添加控件代码。
<?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 -->
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
并为控件设置idandroid:id="@+id/listview"
- 在Activity文件中对控件进行绑定初始化
private ListView listview;
private void initView() {
listview = (ListView) findViewById(R.id.listview);
}
- 接下来我们为ListView设置适配器,这里我们先使用ArrayAdapter
public class ListViewActivity extends AppCompatActivity {
private ListView listview;
private ArrayAdapter<String> mArrayAdapter;
private List<String> list;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
initView(); //初始化控件
getdata(); //初始化数据源
//实例化适配器,并添加数据源
mArrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
//为ListView设置适配器
listview.setAdapter(mArrayAdapter);
}
private void initView() {
listview = (ListView) findViewById(R.id.listview);
}
private void getdata(){
list=new ArrayList<>();
for (int i=1;i<10;i++){
list.add("item"+i);
}
}
}
到这里我们就可以运行一下看看效果了

二、自定义Item
在平时开发中,item可能要显示很多东西,上面的方法已经不能满足要求时,我们就可以自定义item的布局
- 首先我们要创建一个Item的布局文件
lv_item.xml
<?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="50dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/lv_item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="听说你过的挺好"/>
<TextView
android:id="@+id/lv_item_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="123456789"
android:ellipsize="end"
android:text="1"/>
</LinearLayout>
</LinearLayout>
- 然后创建一个实体类Bean.java
public class Info {
private String Title; //标题
private String Content; //内容
public Info(String title, String content) {
Title = title;
Content = content;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getContent() {
return Content;
}
public void setContent(String content) {
Content = content;
}
}
- 接下俩就是重头戏了,创建适配器,继承
BaseAdapter类
public class ListViewAdapter extends BaseAdapter {
private Context context; //上下文
private List<Info> list; //数据源
public ListViewAdapter(Context context, List<Info> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Viewholder viewholder;
if (convertView==null){
//获取item的view
convertView= LayoutInflater.from(context).inflate(R.layout.lv_item,null);
//初始化控件,获取item中的控件
viewholder=new Viewholder();
viewholder.title=convertView.findViewById(R.id.lv_item_title);
viewholder.content=convertView.findViewById(R.id.lv_item_content);
//绑定ViewHolder对象
convertView.setTag(viewholder);
}else {
viewholder= (Viewholder) convertView.getTag();
}
//为控件添加数据
viewholder.title.setText(list.get(position).getTitle());
viewholder.content.setText(list.get(position).getContent());
return convertView;
}
/**
* 创建一个ViewHolder类,用来存放控件
*/
private class Viewholder{
private TextView title;
private TextView content;
}
}
- 最后就是为listView设置适配器了,和一个方法类似
public class ListViewActivity extends AppCompatActivity {
private ListView listview;
private ListViewAdapter adapter;
private List<Info> list;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
initView();
getdata(); //初始化数据源
adapter=new ListViewAdapter(this,list); //实例化适配器
listview.setAdapter(adapter); //为listView设置适配器
}
private void initView() {
listview = (ListView) findViewById(R.id.listview);
}
private void getdata(){
list=new ArrayList<>();
for (int i=1;i<10;i++){
list.add(new Info("笑话"+i,"一个男生暗恋一个女生很久了。一天自习课上,男生偷偷的传了小纸条给女生,上面写着“其实我注意你很久了”。不一会儿,女生传了另一张纸条,男生心急火燎的打开一看“拜托你不要告诉老师,我保证以后再也不嗑瓜子了"));
}
}
}
看看效果吧

本文介绍了Android中ListView的基本使用,包括在XML布局文件中添加ListView控件,初始化及使用ArrayAdapter。接着讲解如何自定义Item布局,创建新的布局文件,定义实体类,并创建自定义适配器,通过继承BaseAdapter实现复杂内容的显示。最后展示了运行效果。
1054

被折叠的 条评论
为什么被折叠?



