Android-ListView-SimpleAdapter
2024-08-25 17:21:44
我在上一篇博客中Android-动态添加控件到ScrollView,写到可以用Java动态添加控件到Scrollview的孩子LinearLayout里面去,这种方式是不合理的,因为这种方式是一次性把数据全部加载完成了
在Android中就提供了专门列表显示条目的控件,ListView控件,ListView控件不是一次性加载全部数据,他是只加载用户在屏幕看得到的数据,当用户滑动的过程中在去加载新的数据,同时会自动销毁之前加载过的数据
什么时候使用ListView ?
答:当很多条目Item,显示都内容不同,数据不同,但是存放的位置是相似的,并且动态变化的条目Item(和数据),就可以用ListView
ListView的使用:
1.在布局中定义ListVIew
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <!-- 定义ListView -->
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView> </RelativeLayout>
2.在Java代码中找到ListVIew,再设置适配器 setAdapter(ListAdapter的子类)
适配器 ArrayAdapter和SimpleAdapter 对比介绍:
ArrayAdapter适配器是数组适配器,只能去适配展示很简单的格局,只能展示条目Item的一个控件
SimpleAdapter适配器是好用适配器,可以展示比ArrayAdapter复杂一些到格局,可以展示一个条目Item的多个控件
ListAdapter是SimpleAdapter的父类:
ListVIew + ArrayAdapter:
package liudeli.ui.all; import android.app.Activity;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class ListViewActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview); ListView listView = findViewById(R.id.listview); List<Map<String, String>> list = new ArrayList<>();
for (int i=0; i< 60; i++) {
Map<String, String> map = new HashMap<>();
map.put("id", "编号" + i +1);
map.put("name", "艺名" + i + 100);
list.add(map);
} // 使用SimpleAdapter适配器
ListAdapter listAdapter =
new SimpleAdapter(this, // 上下文
list, // 数据
android.R.layout.simple_list_item_2, // 使用系统的布局
new String[]{"id", "name"}, // 设置Map的key,数据从哪里来
new int[]{android.R.id.text1, android.R.id.text2}); // 系统布局的两个控件ID,数据设置到那里去 // 把适配器给ListView
listView.setAdapter(listAdapter);
} @Override
protected void onDestroy() {
super.onDestroy();
}
}
展示:
最新文章
- spring源码:BeanPostProcessor(li)
- 【转】前端工程师必须了解的 谷歌 HTML/CSS 规范
- 生成ARM汇编
- ZeroMQ(ZMQ)函数接口英汉直译
- Java Mybatis 框架入门教程
- CnBlog客户端Windows Live Write安装方法
- ArcGisServer根据最大最小坐标换算瓦片行列号
- mysql java Cannot find the driver in the classpath!
- windows下配置python库
- html5 js跨域
- 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定
- 用Haproxy给MySQL做负载均衡
- .24-浅析webpack源码之事件流compilation(2)
- Python_Mix*函数名的使用以及第一类对象,闭包,迭代器,for循环的内部机制
- knockout checkbox 全选
- Spring源码阅读学习一
- Tony的口胡呼呼(。-ω-)zzz
- 4.update更新和delete删除用法
- 2018/7/18Bad English
- MAC锁屏不断网(快捷键启用屏保)