博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发具体解释之ListView具体解释一
阅读量:7192 次
发布时间:2019-06-29

本文共 6211 字,大约阅读时间需要 20 分钟。

列表ListView介绍和实例
 1.ListView  -- ListActivity -- ListAdapter
 2.ArrayAdapter结合ListView进行显示
 3.SimpleAdapter结合ListView进行显示
 4.处理单击ListView事件,处理选择ListView的事件
 5.使用SimpleCursorAdapter与ListView进行关联
 ListView :
要让一个ListView显示出来须要的3个条件:
1.ListView  --- 须要被显示的列表
2.Data      --- 和ListView绑定的数据,通常是一个Cursor或字符串数组
3.ListAdapter --- data和ListView的桥梁  --- 适配作用
经常使用ListAdapter子类:
ArrayAdapter     ---  数组适配  ---- ListAdapter的直接子类
  ArrayList<类型>(context,int itemLayout, data)
  context:上下文环境
  itemLayout:自己定义的每一项要显示的Layout
  data:要显示的数据
 样例:
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data);
   android.R.layout.simple_list_item_1  --- 使用Android自带的 每一项Listview显示布局   -- 实际应用中经常自己定义此item布局
  特别注意:itemLayout  --- ListView中每一项(行)的布局  ---  能够引用系统自带的,但 实际项目中很多其它是使用自己定义的item布局
  系统自带的经常使用item布局:
  android.R.layout.simple_list_item_1    ----- 每一项仅仅有一个TextView
  android.R.layout.simple_list_item_1    ----- 每一项仅仅有两个TextView
  android.R.layout.simple_list_item_single_choice   ----- 每一项有一个TextView。但这一项能够被选择
SimpleAdapter    ---  简单适配  ---- ListAdapter的直接子类
 
 通过SimpleAdapter能够让ListView其中的每一项内容更加个性化,
 通常将ListView中某项的布局信息写在XML文件里。这个布局文件通过R.layout.XX -- 引入到ListView中
 
 SimpleAdapter是ArrayList和Listview之间的桥梁  
 ArrayList中的每一项都是一个Map<String,?>类型。

ArrayList其中的每一项Map对象都和ListView其中的一项进行数据绑定和一一相应

SimpleAdapter的构造器:
public SimpleAdapterK(Context context, List<? extends Map<String,?

>> data, int resource, String[] from , int[] to)

context  -- 上下文
data     -- 基于Map的List,Data里面的每一项都和ListIView里的每一项相应。Data里面的每一项都是Map类型。
            这个Map类中包括了ListView每一行须要的数据  --- 经常使用  data = new ArrayList<Map<String,Object>>();
resource -- 一个layout, 必须包括在to中出现的那些View,系统提供或自己定义layout布局都可。
            系统提供的有:android.R.layout.simpe_list_item_single_choice
                 android.R.layout.two_line_list_item
from     -- 数组名,每个名字是为了在ArrayList中的每个item中索引Map<String, Object>的Object用的
to       -- 这里面是一个TextView的数组。这些TextView以id形式表示。这鞋View必须是TextView
 
为ListView中的每一项加入事件处理:    OnItemClickListener 
 
OnItemClickListener listener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
setTitle(parent.getItemAtPosition(position).toString());
}
};
listView.setOnItemClickListener(listener);
说明:
onItemClick  --  回调函数。当用户单击ListView每一项时。自己主动运行
    parent     --- 被单击的ListView
    view       --- 用户操作的那一项
    position   --- 操作的item项在ListView中的位置
    id         --- 被选中的那一行的id
getItemAtPosition(position)  --- 通过position获得和这一行绑定的数据, 本例中仅仅是把改行内容作为title写出来

listView.setOnItemClickListener(listener)   --- 将监听器注冊到ListView中

实例代码:

ArrayAdapter与ListView

package com.example.androidbasicdemo1;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.ListView;/** * ArrayList
<类型>
(context,int itemLayout, data) * context:上下文环境 * itemLayout:自己定义的每一项要显示的Layout * data:要显示的数据 * * 样例: * ArrayAdapter
adapter = new ArrayAdapter
(ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data); android.R.layout.simple_list_item_1 --- 使用Android自带的 每一项Listview显示布局 -- 实际应用中经常自己定义此item布局 * @author JayHe * */public class ArrayAdapterListViewActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_array_adapter_list_view); //从xml布局文件里获得ListView对象 listView = (ListView) findViewById(R.id.arrayadapterlistView1); //定义要显示的数据 String[] data = getResources().getStringArray(R.array.items_country); //定义适配器 ArrayAdapter
adapter = new ArrayAdapter
(ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data); //为ListView加入适配器 listView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.array_adapter_list_view, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}

SimpleAdapter与ListView

package com.example.androidbasicdemo1;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;public class SimpleAdapterListViewActivity extends Activity {	private List
> data; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple_adapter_list_view); listView = (ListView) findViewById(R.id.simpleadapterlistView1); SimpleAdapter adapter = new SimpleAdapter(SimpleAdapterListViewActivity.this, prepareData(), R.layout.slef_list_item1,new String[]{"姓名","性别"}, new int[]{R.id.selflistview1textView1,R.id.selflistview1textView2}); listView.setAdapter(adapter); OnItemClickListener listener = new OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { setTitle(parent.getItemAtPosition(position).toString()); } }; listView.setOnItemClickListener(listener); } private List
> prepareData(){ data = new ArrayList
>(); Map
item; item = new HashMap
(); item.put("姓名", "吴欢小盆友"); item.put("性别", "女"); data.add(item); item = new HashMap
(); item.put("姓名", "冯荣小朋友"); item.put("性别", "女"); data.add(item); item = new HashMap
(); item.put("姓名", "夏明"); item.put("性别", "男"); data.add(item); item = new HashMap
(); item.put("姓名", "小华"); item.put("性别", "男"); data.add(item); return data; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.simple_adapter_list_view, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}

转载地址:http://oqtkm.baihongyu.com/

你可能感兴趣的文章
mysql安装
查看>>
Thymeleaf入门基础
查看>>
第八天,培训结束了
查看>>
分享WinCE钩子封装库
查看>>
批量操作文本文件进行dos/unix格式转换
查看>>
thinkphp 随机获取一条数据
查看>>
vue生命周期
查看>>
初步使用分支、循环判断数字大小
查看>>
Hbase之修改表结构
查看>>
通过浏览器学习前端的小技巧
查看>>
APP开发之AngularJS学习
查看>>
Sass:RGB颜色函数-Mix()函数
查看>>
phpMyAdmin 错误 缺少 mysqli 扩展。请检查 PHP 配置
查看>>
Win7网上邻居提示未授予用户在此计算机上的请求登录类型解决办法
查看>>
golang包快速生成base64验证码
查看>>
Visual studio 下C++工程相关经验
查看>>
七、SSR(服务端渲染)
查看>>
django--app(六)
查看>>
20165208 预备作业3Linux安装及学习
查看>>
洛谷P3379 【模板】最近公共祖先(LCA)
查看>>