展会信息港展会大全

Android开发详解之ListView详解一
来源:互联网   发布日期:2015-11-26 11:52:31   浏览:1837次  

导读:列表ListView介绍和实例 1.ListView -- ListActivity -- ListAdapter 2.ArrayAdapter结合ListView进行显示 3.Sim...

列表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 adapter = new ArrayAdapter(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类型。ArrayList当中的每一项Map对象都和ListView当中的一项进行数据绑定和一一对应

SimpleAdapter的构造器:

public SimpleAdapterK(Context context, List extends Map> data, int resource, String[] from , int[] to)

context-- 上下文

data-- 基于Map的List,Data里面的每一项都和ListIView里的每一项对应。Data里面的每一项都是Map类型,

这个Map类中包含了ListView每一行需要的数据--- 常用data = new ArrayList>();

resource -- 一个layout, 必须包含在to中出现的那些View,系统提供或自定义layout布局都可。

系统提供的有:android.R.layout.simpe_list_item_single_choice

android.R.layout.two_line_list_item

from-- 数组名,每一个名字是为了在ArrayList中的每一个item中索引Map的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);

}

}

赞助本站

人工智能实验室

相关热词: android开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港