第28讲 UI组件之 ListView和ArrayAdapter
第28讲 UI组件之 ListView和ArrayAdapter
1. Adapter 适配器
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:
常用的适配器有四种:
BaseAdapter 基础数据适配器,继承它需要重写较多的方法,所以也就具有较高的灵活性;
ArrayAdapter 数组适配器,最为简单,只能展示一行字。
SimpleAdapter 简单适配器,功能强大,最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter 数据库适配器,可认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
2.ListView(列表视图)
ListView是Android开发中非常常用的组件,ListView可以用来显示一个列表,可垂直滚动。我们可以对这个列表操作,比如点击列表要做什么等等。在ListView当中显示的元素需要使用一个适配器(Adapter)进行包装。
代码示例1:
android:divider="#00ff00" //分割线颜色
android:dividerHeight="6dp" //分割线粗细
public class MainActivity extends Activity{
//数组数据,数据源
private final String[] ss=newString[]{"云南","北京","上海","香港","大连","天津","大理","云南","北京","上海","香港","大连","天津","大理","昆明" };
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView mListView = (ListView)findViewById(R.id.listView1);
//设置一个Adapter,中间为布局结构,ss为数据源
ArrayAdapter<String> adapter = newArrayAdapter<String>(this, android.R.layout.simple_list_item_1,ss);
/*可以在ListView顶端或者底部添加一个布局,例如搜索。
//其中footer.xml为自定义的一个布局结构。
View view = getLayoutInflater().inflate(R.layout.footer, null);
// listView.addHeaderView(view);
listView.addFooterView(view);
*/
listView.setListAdapter(adapter);
}
}
代码示例2:
//为了使得search按钮实现搜索功能,代码如下添加或修改
final ListViewmListView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,ss);
ViewGroup group=(ViewGroup)getLayoutInflater().inflate(R.layout.footer,
null);
Button button=(Button)group.findViewById(R.id.button1);
final EditTexteditText=(EditText) group.findViewById(R.id.editText1);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
String string=editText.getText().toString();
int position=Integer.valueOf(string);
listView.setSelection(position);
}
});
listView.addHeaderView(group);
listView.setListAdapter(adapter);
代码示例3:
public class SimpleList extendsListActivity {
//数组数据,数据源
private String[] mListStr = {"姓名:雨松MOMO","性别:男","年龄:25","居住地:北京","邮箱:xuanyusong@gmail.com"};
ListView mListView = null;
protected void onCreate(BundlesavedInstanceState) {
mListView = getListView();
setListAdapter(newArrayAdapter<String>(this, android.R.layout.simple_list_item_1,mListStr));
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, intposition, long id) {
Toast.makeText(SimpleList.this,"您选择了" +mListStr[position], Toast.LENGTH_LONG).show();
}
});
super.onCreate(savedInstanceState);
}
}
第28讲 UI组件之 ListView和ArrayAdapter的更多相关文章
- 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter
第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...
- 第30讲 UI组件之 GridView组件
第30讲 UI组件之 GridView组件 1.网格布局组件GridView GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件.一般用于显示多张图片,比如实 ...
- 第16讲- UI组件之TextView
第16讲 UI组件之TextView Android系统所有UI类都是建立在View和ViewGroup这两类的基础上的. 所有View的子类称为widget:所有ViewGroup的子类称为Layo ...
- 第34讲 UI组件之 ProgressDialog和Message
第34讲UI组件之 ProgressDialog和Message 1.进度对话框 ProgressDialog <1>简介 ProgressDialog是AlertDialog类的一个扩展 ...
- 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler
第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...
- 第32讲 UI组件之 时间日期控件DatePicker和TimePicker
第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置, Time ...
- 第31讲 UI组件之 Gallery画廊控件
第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...
- 第27讲 UI组件之 ScrollView与底部动态添加数据
第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...
- 第25讲 UI组件之 AlertDialog 的各种实现
第25讲 UI组件之AlertDialog 的各种实现 对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框. Android提供了多种对话框:警告对话框(A ...
随机推荐
- SEO_Alexa排名
1.Alexa排名是评价某一网站访问量的一个指标,对SEO优化没有任何作用,这个数据是可以做假的,考虑Alexa排名纯粹是在浪费时间. 2.Alexa排名是针对已经在浏览器中安装了Alexa Tool ...
- Matlab生成二类线性可分数据
%% 生成二类线性可分数据 function [feature, category]=generate_sample(step,error) aa=3; %斜率 bb=3; %截距 b1=1; rr ...
- Linux输出重定向
- Win8.1OS64位oracle11安装配置及PL/SQL Developer怎样连接64位oracle
Oracle 为什么选择oracle 1.oracle可以在主流的平台上执行,而相对于sql server仅仅支持windows,而windows在wr手里攥着呢,所以你懂的.在安全性上来讲,非常多地 ...
- Java基础知识强化59:String(字符串)和其他类型的相互转化
1. String类型 ---> 其他类型 (1)使用基本类型包装类的parseXXX方法 e.g:String(字符串)转化为int(整型) String MyNumber ="12 ...
- CSS背景特殊属性值
CSS代码示例-背景附着属性(background-attachment)-[背景图固定不动,不跟随滚动条滚动]:<html><head><title>背景附着属性 ...
- .NET Core初体验 - 在Mac下运行第一个Web示例程序
要说最近两天程序猿之间最喜欢吹水的事是什么?那绝壁是甲骨文要放弃Java!简直做梦都要笑醒!由于公司的产品线全面转向Java,最近几个月也一直在苦学Java技术.已经默默决定了,如果消息证实是真的,我 ...
- 【Linux常用命令(更新)】
1.ifconfig:查看当前ip,网卡信息 2.df -h:查看文件系统的使用情况,挂载点信息 3.du -sh /var:查看/var文件夹大小 4.netstat -a:查看网络联机状态 5. ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
- Python学习笔记总结(一)对象和流程语句总结
一.对象类型 1.数字 数字:不可变 2.字符串 字符串:不可原处修改[修改需要创建新的对象],有顺序,支持求长(len),合并(+),重复(*),索引S[0],分片(S[1:3]],成员测试(in) ...