第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的更多相关文章

  1. 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter

    第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...

  2. 第30讲 UI组件之 GridView组件

    第30讲 UI组件之 GridView组件 1.网格布局组件GridView GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件.一般用于显示多张图片,比如实 ...

  3. 第16讲- UI组件之TextView

    第16讲 UI组件之TextView Android系统所有UI类都是建立在View和ViewGroup这两类的基础上的. 所有View的子类称为widget:所有ViewGroup的子类称为Layo ...

  4. 第34讲 UI组件之 ProgressDialog和Message

    第34讲UI组件之 ProgressDialog和Message 1.进度对话框 ProgressDialog <1>简介 ProgressDialog是AlertDialog类的一个扩展 ...

  5. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler

    第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...

  6. 第32讲 UI组件之 时间日期控件DatePicker和TimePicker

    第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置,    Time ...

  7. 第31讲 UI组件之 Gallery画廊控件

    第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...

  8. 第27讲 UI组件之 ScrollView与底部动态添加数据

    第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...

  9. 第25讲 UI组件之 AlertDialog 的各种实现

    第25讲 UI组件之AlertDialog 的各种实现 对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框. Android提供了多种对话框:警告对话框(A ...

随机推荐

  1. 使用 AtomicInteger 进行计数(java多线程优化)

    通常,在我们实现多线程使用的计数器或随机数生成器时,会使用锁来保护共享变量.这样做的弊端是如果锁竞争的太厉害,会损害吞吐量,因为竞争的同步非常昂贵. volatile 变量虽然可以使用比同步更低的成本 ...

  2. 视图的touch事件的传播控制

    在视图控制器类中.self.view中会包含多个多层的自己定义视图. 我自己定义了一个uicollectionview类,名称为gridview,又自己定义了一个uicollectionviewcel ...

  3. Java为什么使用连接池

    一.简介 动态Web站点往往用数据库存储的信息生成Web页面,每一个页面请求导致一次数据库访问.连接数据库不仅要开销一定的通信和内存资源,还必须完成用户验证.安全上下文配置这类任务,因为往往成为最为耗 ...

  4. Vim 自动文件头注释与模板定义

    Vim 自动文件头注释与模板定义 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板. 使用方法 插入模式输入模式输入seqlogic[Ente ...

  5. Chrome: Shockwave Flash isn't responding

    这个问题问 Google 解决得比较快,百度里尽是转载党的东西! 1. 到 chrome://settings/content 找到 Plug-ins 项目 2. 点击 Plug-ins 里的 Exc ...

  6. 纯css实现幻灯片效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  7. CSS投影实现方式

    备用素材: 1.png    shadow.png 第一种方式: 利用负边距实现 最终效果图: <!DOCTYPE html> <html lang="en"&g ...

  8. 使用匿名管道在进程间通信 (System.IO.Pipes使用)(转)

    原文地址:http://www.cnblogs.com/yukaizhao/archive/2011/08/04/system-io-pipes.html 管道的用途是在同一台机器上的进程之间通信,也 ...

  9. 折叠UITableView分组实现方法

    做项目的时侯用到了折叠分组,最近就研究了一下,找了一些网上的项目,发现有一些缺点,研究了几天自己终于写出了一个.而且分组的数据源比较灵活,每组之间的状态没有什么影响. 实现的大体思路是每个分组用一个s ...

  10. java 上传文件

    public static boolean upload(File file, String savepath, String loginNo, String filename) { boolean ...