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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值