我在上一篇博客中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();
}
}

展示:

最新文章

  1. spring源码:BeanPostProcessor(li)
  2. 【转】前端工程师必须了解的 谷歌 HTML/CSS 规范
  3. 生成ARM汇编
  4. ZeroMQ(ZMQ)函数接口英汉直译
  5. Java Mybatis 框架入门教程
  6. CnBlog客户端Windows Live Write安装方法
  7. ArcGisServer根据最大最小坐标换算瓦片行列号
  8. mysql java Cannot find the driver in the classpath!
  9. windows下配置python库
  10. html5 js跨域
  11. 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定
  12. 用Haproxy给MySQL做负载均衡
  13. .24-浅析webpack源码之事件流compilation(2)
  14. Python_Mix*函数名的使用以及第一类对象,闭包,迭代器,for循环的内部机制
  15. knockout checkbox 全选
  16. Spring源码阅读学习一
  17. Tony的口胡呼呼(。-ω-)zzz
  18. 4.update更新和delete删除用法
  19. 2018/7/18Bad English
  20. MAC锁屏不断网(快捷键启用屏保)

热门文章

  1. 06_java之类概述
  2. C#利用QrCode.Net生成二维码(Qr码
  3. Oracle11gR2-聚簇因子浅析
  4. linux查找目录下的所有文件中是否含有某个字符串 &lt;zhuan&gt;
  5. (转) iphone开发资源汇总
  6. mysql主从错误180301
  7. 全文搜索技术—Lucene
  8. 71. Simplify Path (Stack)
  9. C++ split
  10. VMWare windows找不到microsoft软件许可条款