`
come_for_dream
  • 浏览: 120801 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

ListView知识总结

 
阅读更多

                                                    ListView控件使用总结

 

Android开发中ListView是比较常用的组件,他用列表的形式显示数据,根据数据的长度自动的增长列表在实际的开发中使用比较多,之前做的音乐播放器中已经使用到这个组件,为了自己加深理解并且为了和大家分享我稍微进行了整理并写了一例子以供大家相互学习。


.ListView使用ArrayAdapter绑定数据

默认情况下,ArrayAdapter绑定每一个对象的toString值到layout

中预先定义的TextView控件上。

 

在布局activity_main.xml文件中加入ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >

    </ListView>

</RelativeLayout>

 java代码:

package com.example.listviewdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private ListView listView;

	private String[] datas = { "first", "second", "third", "fourth", "fifth" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 初始化列表
		listView = (ListView) findViewById(R.id.listView);

		// 給列表加载数据
		listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1, datas));
		
	       //给列表添加监听器
			listView.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> parent, View view,
						int position, long id) {
					// TODO Auto-generated method stub
					//显示选中的那一项的在数组中的下标
                    Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_SHORT).show();

				}

			});
	}

	

}

 

 运行效果:


 

 


使用过程大致是:

1.定义数组存放ListViewitem的内容

2.通过ArrayAdapter的构造函数来创建一个ArrayAdapter的对象

3.通过ListViewsetAdapter()方法绑定ArrayAdapter的对象

注意ArrayAdapter的构造方法有很多,上面使用的仅仅是其中的一种

第一个参数this是指的上下文,

第二个参数比较重要,这里android.R.layout.simple_expandable_list_item_1

的这个参数为一个包含TextView,用来填充ListView的每一行的布局资源ID

第三个参数为ListView的内容。其中第二个参数可以自定义一个layout,但是这个layout必须要有TextView控件。

 

 


二.我们也可以实现带RadioButtonCheckBoxListView

 

 CheckBox

 

android.R.layout.simple_list_item_multiple_choice

 或者

 

 

android.R.layout.simple_list_item_checked

 

 

 

 RadioButton

android.R.layout.simple_list_item_single_choice

 

 

 

设置选择模式的两种方法:

 

listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

 

 

设置选择模式的方法也可以在xml布局文件中声明:

 

android:choiceMode="multipleChoice"

 

 

 

注意若没有设置选择模式选择框是不会被选中的

 

 

 android.R.layout.simple_list_item_multiple_choice

 android.R.layout.simple_list_item_checked

 

 

 

 

 

上面这两个参数对单选还是多选并没有影响。

有影响的是listView.setChoiceMode()方法

 

 

 

 实现带CheckBoxListView代码:

 // 給列表加载数据

 

 

listView.setAdapter(new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_checked, 

datas));

android:choiceMode="multipleChoice"

  

 

 

 

实现带CheckButton的代码是

 

 

 

listView.setAdapter(new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_single_choice, 

GetSQLiteMusic._titles));

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

 

 

下面是两个简单的例子:

 

xml布局文件同上面activity_main.xml文件

java代码:

 

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 初始化列表
		listView = (ListView) findViewById(R.id.listView);

		// 給列表加载数据
		listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_multiple_choice, datas));
		listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
//		simple_expandable_list_item_1
	       //给列表添加监听器
			listView.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> parent, View view,
						int position, long id) {
					// TODO Auto-generated method stub
					//显示选中的那一项的在数组中的下标
                    Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_SHORT).show();

				}

			});
	}

 

运行效果:

 

 

 

实现带RadioButton的代码:

 

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 初始化列表
		listView = (ListView) findViewById(R.id.listView);

		// 給列表加载数据
		listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_multiple_choice, datas));
		listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

	       //给列表添加监听器
			listView.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> parent, View view,
						int position, long id) {
					// TODO Auto-generated method stub
					//显示选中的那一项的在数组中的下标
                    Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_SHORT).show();

				}

			});
	}

 
 运行效果:



 

 

 

. ListView使用SimpleAdapter

 

SimpleAdapter的使用非常简单,扩展性好,可以定义各种各样的布局出来,同时它的功能也非常强大可以通过它自定义ListView中的item的内容,比如图片、多选框等。现在我们主要讨论一下自定义SimpleAdapter显示ListView的例子。

Xml

<?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="wrap_content"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true" />

  
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/img"
        android:textColor="@android:color/black"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/title"
        android:layout_below="@id/title"
        android:textColor="@android:color/black"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textSize="22sp" />

</RelativeLayout>

 

 java:

package com.example.listviewdemo;

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.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {

	private ListView listView;
@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 初始化列表
		listView = (ListView) findViewById(R.id.listView);

		String[] from = new String[] { "title", "info", "time","img" };
		int[] to = new int[] { R.id.title, R.id.info,R.id.tvTime, R.id.img };

		SimpleAdapter adapter = new SimpleAdapter(this, getData(),
				R.layout.list_item, from, to);

		listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// 显示选中的那一项的在数组中的下标
				Toast.makeText(MainActivity.this, "" + position,
						Toast.LENGTH_SHORT).show();

			}

		});
	}

	private List<Map<String, Object>> getData() {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("title", "G1");
		map.put("info", "google 1");
		map.put("time", "time 1");
		map.put("img", R.drawable.p1);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put("title", "G2");
		map.put("info", "google 2");
		map.put("time", "time 2");
		map.put("img", R.drawable.p2);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put("title", "G3");
		map.put("info", "google 3");
		map.put("time", "time 3");
		map.put("img", R.drawable.p3);
		list.add(map);

		return list;

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 运行效果:

 



 

 

  • 大小: 61.1 KB
  • 大小: 62.8 KB
  • 大小: 91.2 KB
  • 大小: 61.9 KB
分享到:
评论

相关推荐

    C#,winform,listView动态插入数据

    ### C# WinForm ListView 动态插入数据详解 在C#的WinForms应用程序开发中,`ListView` 控件是常用的一种界面元素,用于显示一系列条目,并且...这些知识对于开发基于WinForms的应用程序来说是非常重要的基础技能。

    C#下的自绘ListView,方便的在ListView中显示各种控件

    总结来说,自绘ListView是C#开发中提高ListView功能和灵活性的一种重要技术。通过自定义绘制和测量过程,我们可以将各种控件嵌入到列表项中,实现更丰富的用户界面。然而,这也需要开发者具备一定的图形绘制和控件...

    ListView 自动调整列宽

    #### 关键知识点 1. **ListView 控件介绍** 2. **ColumnHeaderAutoResizeStyle 枚举** 3. **TextRenderer.MeasureText 方法** 4. **两种自动调整列宽的方法** ### ListView 控件介绍 `ListView` 是 Windows Forms...

    ListView內部拖放

    ### ListView内部拖放知识点解析 #### 一、概述 在Windows Forms应用程序开发中,`ListView` 控件是一种非常实用的工具,它能够帮助开发者展示列表形式的数据,并支持多种视图模式(如大图标、小图标、列表、详细...

    android 横向ListView 水平Listview DEMO

    总结起来,"android 横向ListView 水平Listview DEMO"是一个关于如何在Android应用中实现水平滚动列表的实例,它涵盖了使用HorizontalScrollView或RecyclerView的原理、自定义Adapter的数据绑定、事件监听以及性能...

    c#listview 使用大全例

    总结,C#的ListView控件是一个强大且灵活的数据展示工具,通过熟练掌握其属性、方法、事件以及各种视图模式,开发者可以构建出满足各种需求的用户界面。无论是简单的数据展示还是复杂的数据操作,ListView都能提供...

    Android实现ListView的增删改查Demo

    总结来说,这个"Android实现ListView的增删改查Demo"涵盖了以下几个关键知识点: 1. 数据模型类的设计(如`Word`) 2. SQLite数据库的使用(`SQLiteOpenHelper`子类) 3. 自定义适配器(如`WordAdapter`) 4. ...

    ListView知识应用-仿IOS百度云条目点击显示菜单模块实现

    总结起来,实现“ListView知识应用-仿IOS百度云条目点击显示菜单模块”需要掌握以下几点: 1. ListView的基本使用和Adapter机制 2. 自定义Adapter,设计可扩展的布局 3. 触摸事件处理,重写`onTouchEvent()`方法 4. ...

    androidlistview里面使用radiobutton

    总结,将RadioButton应用于Android ListView涉及到自定义Adapter、单选逻辑处理和性能优化等多个方面。理解这些知识点对于开发高效、用户友好的Android应用至关重要。通过熟练掌握这些技术,开发者可以更好地实现...

    listview1

    总结来说,ListView1这个话题涵盖了Android开发中的数据列表展示技术,包括ListView的基本原理、适配器机制、数据源的绑定,以及与Excel数据交互的可能性。通过理解这些知识点,开发者可以创建出能够高效展示大量...

    listview+通讯录字母排序

    总结来说,“listview+通讯录字母排序”是Android开发中的一个实用技巧,它结合了ListView的基础使用、数据分组、点击事件处理以及滚动监听等多方面知识。通过学习和实践这个主题,新手开发者不仅可以提升对Android ...

    listview中嵌套gridview

    总结一下,实现“ListView中嵌套GridView”涉及的关键知识点包括: 1. Android的ListView和GridView布局控件的理解与使用。 2. 自定义Adapter,包括ListViewAdapter和GridViewAdapter。 3. ViewHolder模式的应用,...

    Android自定义adapter的listview

    以上就是关于“Android自定义adapter的listview”的主要知识点。自定义Adapter是Android开发中的核心技能之一,掌握好这一技巧,能帮助我们实现各种复杂的界面效果。通过不断实践和优化,我们可以在保证性能的同时,...

    listview 显示多级树型结构

    总结,实现ListView显示多级树型结构涉及到数据模型的设计、适配器的扩展、视图状态管理、布局设计以及性能优化等多个方面。通过理解这些知识点,并结合具体的示例代码,开发者可以创建出灵活且高效的树型ListView。

    Android ListView 嵌套ListView

    一、ListView的基础知识 1. **Adapter**:ListView的核心是Adapter,它负责将数据源(如ArrayList)转换为ListView可显示的View。常见的Adapter有ArrayAdapter、SimpleAdapter等,开发者也可以自定义Adapter以满足...

    PB listview 转存excel

    本知识点主要围绕如何将PB Listview中的数据转换并保存为Excel文件来展开。 在PowerBuilder 10(PB10)环境下,实现“PB listview 转存excel”通常涉及以下几个关键步骤: 1. **数据准备**:首先,确保Listview...

    ListView使用ViewHolder模式提高效率

    "ListView使用ViewHolder模式提高效率"这一主题就是解决这个问题的关键知识点。 ViewHolder模式是Android开发中为了提升ListView性能而设计的一种优化策略。它通过减少findViewById的调用来改善视图的绘制速度。在...

    ListView、ListBox背景样式

    #### 二、基础知识 在深入探讨之前,我们先了解一些基本概念: 1. **`ListView`** 和 **`ListBox`**:这两个控件都可以用来显示一系列项,但它们之间有一些差异。`ListView`提供更多的视图选项,如图标视图、详细...

    ListView的圆角效果

    总结起来,实现ListView的圆角效果主要涉及以下步骤: 1. 创建自定义的ListView,重写`onDraw()`方法绘制圆角背景。 2. 自定义ListView项的视图,同样通过重写`onDraw()`或使用XML drawable设置圆角背景。 3. 在...

    安卓listview相关相关-listview多列显示实现书架效果.rar

    总结,这个压缩包提供的示例代码可以帮助开发者了解如何在Android中实现ListView的多列显示,并创造出具有书架效果的用户界面。通过学习和实践,开发者可以进一步掌握Android UI设计和数据绑定的技巧,提高应用的...

Global site tag (gtag.js) - Google Analytics