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{intmCount= 0;ArrayAdapter<String>mAdapter;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);final ListView list = getListView(); // 注2mAdapter = new ArrayAdapter<String>(this, // 注5android.R.layout.simple_list_item_1);list.setAdapter(mAdapter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) // 注3{menu.add(0, 1, 1, "add");return super.onCreateOptionsMenu(menu);}@Overridepublic 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);
<?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
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- 箭头函数的基础使用
- Python技巧匿名函数、回调函数和高阶函数
- python list.sort()根据多个关键字排序的方法实现
- Android:Gtalk(显示好友列表)
- Android之TabHost
- popwindow动画显示消失,activity切换动画
- android 显示特殊符号
- [转]android 一直在最前面的浮动窗口效果