Android常见UI组件之ListView(二)——定制ListView

Android常见UI组件之ListView(二)——定制ListView

这一篇接上篇,展示ListView中选择多个项及实现筛选功能~

1、在位于res/values文件夹下的strings.xml文件中添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">BasicView5</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
	<string-array name="presidents_array">
	    <item>Dwight D. Eisenhower</item>
	    <item>John F. Kennedy</item>
	    <item>Lyndon B. Johnson</item>
	    <item>Richard Nixon</item>
	    <item>Gerald Ford</item>
	    <item>Jimmy Carter</item>
	    <item>Ronald Reagan</item>
	    <item>George H.W. Bush</item>
	    <item>Bill Clinton</item>
	    <item>George W. Bush</item>
	    <item>Barack Obama</item>
	</string-array>
</resources>

2、修改上一篇中的BasicView5.java文件的代码,修改后的代码如下:

package com.example.basicview5;

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

public class MainActivity extends ListActivity {
	String[] presidents;//将列表信息存储在strings.xml文件中,再以编程方式读取

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// ---no need to call this---//
		// setContentView(R.layout.activity_main);

		ListView listView = getListView();// 获取ListActivity的列表视图
		listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);// 可以选择多个项
		listView.setTextFilterEnabled(true);//启用筛选功能,在键盘上输入,ListView自动筛选
		// getResources()方法以编程方式检索与应用程序捆绑的资源
		presidents = getResources().getStringArray(R.array.presidents_array);

		setListAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_checked, presidents));
	}

	public void onListItemClick(ListView parent, View v, int position, long id) {
		Toast.makeText(this, "You have selected " + presidents[position],
				Toast.LENGTH_SHORT).show();
	}

	@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;
	}

}

3、运行程序,效果如下:

4、在activity_main.xml文件中添加代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    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" >

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Show selected items" />

    <ListView
        android:id="@+id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

5、在BasicView5.java文件中添加代码,如下:

package com.example.basicview5;

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

public class MainActivity extends ListActivity {
	String[] presidents;//将列表信息存储在strings.xml文件中,再以编程方式读取

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// ---need to call this---//
		setContentView(R.layout.activity_main);//由于在xml文件中添加了一个ListView部分填充一个活动,所以需要加载活动内容。

		ListView listView = getListView();// 获取ListActivity的列表视图
		listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);// 可以选择多个项
		listView.setTextFilterEnabled(true);//启用筛选功能,在键盘上输入,ListView自动筛选
		// getResources()方法以编程方式检索与应用程序捆绑的资源
		presidents = getResources().getStringArray(R.array.presidents_array);

		setListAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_checked, presidents));
	}

	public void onListItemClick(ListView parent, View v, int position, long id) {
		Toast.makeText(this, "You have selected " + presidents[position],
				Toast.LENGTH_SHORT).show();
	}

	public void onClick(View view) {
		ListView listView = getListView();
		String itemsSelected = "Selected items: \n";
		for(int i = 0; i < listView.getCount(); i++) {
			if(listView.isItemChecked(i)) {//找出被选中的item
				itemsSelected += listView.getItemAtPosition(i) + "\n";//返回指定位置的項的名称
			}
		}
		Toast.makeText(this, itemsSelected, Toast.LENGTH_LONG).show();
	}
	@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;
	}

}

6、运行效果如下:

筛选并选中几个项,再按按钮显示选择了那些项:

Android常见UI组件之ListView(二)——定制ListView

时间: 2024-12-17 17:07:18

Android常见UI组件之ListView(二)——定制ListView的相关文章

Android常见UI组件之ListView(一)

使用ListView显示一个长的项列表 1.新建一个名为"BasicView5"的Android项目: 2.修改BasicView5.java文件,修改后的程序如下: package com.example.basicview5; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.view.Menu; import android.

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

Android常用UI组件 - ListView

列表视图(ListView)是Android当中一个非常重要的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示. 列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据 具体的将被映射的字符串,图片,或者基本组件. 首先介绍"适配器"这个基础概念.在列表中定义的数据都通过"适配器"来映射到ListView上,ListView中常用的适配器有两种: ArrayAdap

Android常用UI组件 - Button

按钮(Button)是Android当中一个常用的UI组件,很小但是在开发中最常用到.一般通过与监听器结合使用,从而触发一些特定事件. Button继承了TextView.它的功能就是提供一个按钮,这个按钮可以供用户点击,当用户对按钮进行操作的时候,触发相应事件,如点击,触摸.一 般对于一个按钮而言,用的最多的就是点击事件,Button间接继承自View,而Android UI中的所有事件,都是定义在View中的. 实例:ButtonDemo 运行效果: 代码清单: 布局文件:main.xml

Android常用UI组件 - EditText

EditText是接受用户输入信息的最重要Android UI组件,可以利用EditText.getText()获取它的文本内容. 实例:EditTextDemo 运行效果: 代码清单: 布局文件:main.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android&quo

【Android】UI组件变量组织

说明 这不是一篇技术文章,而是因为最近项目新来了几个android新人,所以我琢磨在代码风格上进行一下统一,所以有了以下以及后面的几篇文章. java文件内部UI组件变量组织 UI组件使用小写字母"v"作为前缀. v主要表示"View",android源码中,变量前缀主要是"m",但是个人觉得对于UI变量,还是用"v"比较清晰 意图导向,最小化抽象 UI变量的"声明类型"应该是能够实现意图的最小化抽象类型,

从零开发一款自己的小程序UI组件库(二)

写在前面:从零开发一款自己的小程序UI组件库(一) 上节我们讲到初始化组件库模板.模板文件概述.模板上传npm以及npm包文件下载至本地并运用到项目.这节我们继续,内容主要有基础UI组件库的搭建(button组件的实例)以及如何在本地使用npm link调试npm包项目. 本节所用到的物料:mineui-weapp组件库v1.1.weapp-for-mineui程序v1.1 1.开发基础组件button 我们上节有提到,要开发组件库的话,需要在官方单组件模板的基础上,①修改tools目录下的co

从零开始学android&lt;chronometer计时器组件.三十二.&gt;

计时器来计算每个运动员所消耗的时间等,而在Android系统之中,这种计时的功能就可以使用Chronometer组件,此类的继承结构如下所示: 2java.lang.Object ? android.view.View ? android.widget.TextView ? android.widget.Chronometer 常见的方法 1 public Chronometer(Context context) 构造 创建Chronometer对象 2 public long getBase(

【Material Design视觉设计语言】UI组件设计(二):卡片

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 卡片是包含一组特定数据集的纸片,数据集含有各种相关信息,它通常用来显示由不同种类对象组成的内容的便捷途径.它们也适用于展示尺寸或操作相当不同的相似对象,像带有不同长度标题的照片. 一 卡片的特点 卡片有以下特点: 卡片通常是通往更详细复杂信息的入口. 卡片有固定的宽度和可变的