Android控件开发之四----ListView(2)

ArrayAdapter(Context context, int textViewResourceId, List<T> objects)ArrayAdapter(Context context, int textViewResourceId, List<T> objects)继续Android控件开发之四----ListView(1)下面在介绍下ArrayAdapter的相关知识

给出ArrayAdapter的构造函数

(1)ArrayAdapter(Context context, int textViewResourceId) 
第一个参数context,第二个参数是指要显示的布局(包括TextView)的ID(The resource ID for a layout file containing a TextView to use when instantiating views.)


(2)ArrayAdapter(Context context, int resource, int textViewResourceId)
第一个参数context,第二个参数是指要显示的布局(包括TextView)的ID,第三个参数是参数2中布局中需要显示的TextView的ID;


(3)ArrayAdapter(Context context, int textViewResourceId, T[] objects) 
(4)ArrayAdapter(Context context, int textViewResourceId, List<T> objects) 

第一个参数context,第二个参数是指要显示的布局(包括TextView)的ID,第三个参数需要显示的数据源;


(5)ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 
(6)ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) 

第一个参数context,第二个参数是指要显示的布局(包括TextView)的ID,第三个参数是参数2中布局中需要显示的TextView的ID,第四个参数需要显示的数据源;


下面给个例子,是刚开始没有数据,动态增加数据,用(1)ArrayAdapter(Context context, int textViewResourceId)这个构造函数,这里也可以用构造函数(2),只要在构造函数那增加要显示的TextView的ID

package com.potato;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListViewArrayAdapterListActivity extends ListActivity   // 注1
{
	int						mCount	= 0;
	ArrayAdapter<String>	mAdapter;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		final ListView list = getListView();   						// 注2
		mAdapter = new ArrayAdapter<String>(this,  // 注5
				android.R.layout.simple_list_item_1);
		list.setAdapter(mAdapter);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu)          // 注3
	{
		menu.add(0, 1, 1, "add");
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item)    // 注3
	{
		switch (item.getItemId())
		{
		case 1:
		{
			mCount++;
			// 实现实时更新,无需其他操作
			// adapter.add()和items.add()操作的是同一个List<T>对象,
			// 不同的是adapter.add()完成后会自动更新UI,
			// items.add()之后还要显示的调用adapter.notifyDataSetChanged()来更新UI。
			mAdapter.add("item" + mCount);						// 注4
		}
			break;
		}
		return super.onOptionsItemSelected(item);
	}
}

注1

ListActivity是继承与Acitvity,会在后面的章节会解释,这里先不做介绍;

注2

getListView()是在继承与ListActivity的情况下,获取ListView对象;

注3

这两个函数用于处理Optionmenu,后续章节介绍;

注4

实现数据的动态加载,增加了数据,自动就会刷新ui,数据就会显示在ListView上;

这里有两种实现方式:

(1)直接调用arrayAdapter的add,把数据加入,这样ui会自动更新;

(2)另一种是先吧数据加到链表中,在通过adapter.notifyDataSetChanged(),实现数据的更新;

注5

可以使用构造函数(2)

mAdapter = new ArrayAdapter<String>(this, 
				android.R.layout.simple_list_item_1, android.R.id.text1);


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/drawable_backgroud"
    >

    <!-- 
	<Button android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:text="Add item"
			android:id="@+id/btnAdd" />
		 -->	
	<ListView 
	    android:id="@android:id/list" 
	    android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:cacheColorHint="#00000000"
		android:fadingEdge="vertical" 
		android:background="@drawable/drawable_backgroud"/>
	<TextView
	    android:id="@android:id/empty"
	    android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="no data"
	    />
</LinearLayout>

至于构造函数3,4,5,6在上一篇博文ListView(1)中已经使用过。。。。


有问题请留言或者发邮件。。。

联系方式:ligexiao@gmial.com

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值