ArrayAdapter(字符串调用toString) ArrayAdapter是一个绑定View到一组对象的通用类。默认情况下,ArrayAdapter绑定每个对象的toString值到在layout中预先定义的TextView控件上。 可变通的,构造函数允许你使用更加复杂的layout或者通过重写getView方法来扩展类从而使用TextView的替代物(如ImageView或嵌套的layout)。 SimpleCursorAdapter(游标) SimpleCursorAdapter绑定View到Content Provider查询返回的游标上。指定一个XML layout定义,然后将数据集中的每一列的值绑定到layout中的一个View上。 Adapter进行数据绑定 //将数组中的字符串绑定到ListView中用于显示每个项目的简单TextView控件上
ArrayList
<
String
>
myStringArray
=
new
ArrayList
<
String
>();
ArrayAdapter
<
String
>
myAdapterInstance
;
//显示布局,可以系统自带,也可以自定义
int
layoutID
=
android
.
R
.
layout
.
simple_list_item_1
;
//参数context,布局,数据
myAdapterInstance
=
new
ArrayAdapter
<
String
>(
this
,
layoutID
,
myStringArray
);
myListView
.
setAdapter
(
myAdapterInstance
);
重写ArrayAdapter,显示多个元素 1.创建一个新的ToDoItem类来保存任务和任务的创建日期. package
com
.
paad
.
todolist
;
import
java
.
text
.
SimpleDateFormat
;
import
java
.
util
.
Date
;
public
class
ToDoItem
{
String
task
;
Date
created
;
public
String
getTask
()
{
return
task
;
}
public
Date
getCreated
()
{
return
created
;
}
public
ToDoItem
(
String
_task
)
{
this
(
_task
,
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()));
}
public
ToDoItem
(
String
_task
,
Date
_created
)
{
task
=
_task
;
created
=
_created
;
}
@Override
public
String
toString
()
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(“
dd
/
MM
/
yy
”);
String
dateString
=
sdf
.
format
(
created
);
return
“(“
+
dateString
+
“)
“
+
task
;
}
}
2.创建一个自定义的layout来显示每一个子项目
xml version
=”
1.0
”
encoding
=”
utf
-
8
”?>
xmlns:android
=
”http://schemas.android.com/apk/res/android”
android:layout_width
=
”fill_parent”
android:layout_height
=
”fill_parent”
android:background
=
”@color/notepad_paper”
>
android:id
=
”@+id/rowDate”
android:layout_width
=
”wrap_content”
android:layout_height
=
”fill_parent”
android:padding
=
”10dp”
android:scrollbars
=
”vertical”
android:fadingEdge
=
”vertical”
android:textColor
=
”@color/notepad_text”
android:layout_alignParentRight
=
”true”
/>
android:id
=
”@+id/row”
android:layout_width
=
”fill_parent”
android:layout_height
=
”fill_parent”
android:padding
=
”10dp”
android:scrollbars
=
”vertical”
android:fadingEdge
=
”vertical”
android:textColor
=
”@color/notepad_text”
android:layout_alignParentLeft
=
”@+id/rowDate”
/>
3.创建一个新的类(ToDoItemAdapter),使用指定的ToDoItem变量来扩展一个ArrayAdapter。重写getView方法来将ToDoItem对象中的task和date属性指定给第4步创建的layout中的View。 import
java
.
text
.
SimpleDateFormat
;
import
android
.
content
.
Context
;
import
java
.
util
.*;
import
android
.
view
.*;
import
android
.
widget
.*;
public
class
ToDoItemAdapter
extends
ArrayAdapter
<
ToDoItem
>
{
int
resource
;
public
ToDoItemAdapter
(
Context
_context
,
int
_resource
,
List
<
ToDoItem
>
_items
)
{
super
(
_context
,
_resource
,
_items
);
resource
=
_resource
;
}
@Override
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
){
LinearLayout
todoView
;
ToDoItem
item
=
getItem
(
position
);
String
taskString
=
item
.
getTask
();
Date
createdDate
=
item
.
getCreated
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(“
dd
/
MM
/
yy
”);
String
dateString
=
sdf
.
format
(
createdDate
);
if
(
convertView
==
null
){
todoView
=
new
LinearLayout
(
getContext
());
String
inflater
=
Context
.
LAYOUT_INFLATER_SERVICE
;
LayoutInflater
vi
;
vi
=
(
LayoutInflater
)
getContext
().
getSystemService
(
inflater
);
vi
.
inflate
(
resource
,
todoView
,
true
);
}
else
{
todoView
=
(
LinearLayout
)
convertView
;
}
TextView
dateView
=
(
TextView
)
todoView
.
findViewById
(
R
.
id
.
rowDate
);
TextView
taskView
=
(
TextView
)
todoView
.
findViewById
(
R
.
id
.
row
);
dateView
.
setText
(
dateString
);
taskView
.
setText
(
taskString
);
return
todoView
;
}
}
4.在Activity中显示
private
ArrayList
<
ToDoItem
>
todoItems
;
private
ListView
myListView
;
//自定义的Adapter
private
ToDoItemAdapter
<
ToDoItem
>
aa
;
@Override
public
void
onCreate
(
Bundle
icicle
)
{
super
.
onCreate
(
icicle
);
setContentView
(
R
.
layout
.
main
);
myListView
=
(
ListView
)
findViewById
(
R
.
id
.
myListView
);
todoItems
=
new
ArrayList
<
ToDoItem
>();
//上面定义的布局
int
resID
=
R
.
layout
.
todolist_item
;
aa
=
new
ToDoItemAdapter
<
ToDoItem
>(
this
,
resID
,
todoItems
);
myListView
.
setAdapter
(
aa
);
}
使用SimpleCursorAdapter SimpleCursorAdapter允许你绑定一个游标的列到ListView上,并使用自定义的layout显示每个项目。 SimpleCursorAdapter的创建,需要传入当前的上下文、一个layout资源,一个游标和两个数组: 一个包含使用的列的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数据值。 //构造一个SimpleCursorAdapter来显示联系人信息:
String
uriString
=
“
content
:
//contacts/people/”;
Cursor
myCursor
=
managedQuery
(
Uri
.
parse
(
uriString
),
null
,
null
,
null
,
null
);
//字段
String
[]
fromColumns
=
new
String
[]
{
People
.
NUMBER
,
People
.
NAME
};
//组件
int
[]
toLayoutIDs
=
new
int
[]
{
R
.
id
.
nameTextView
,
R
.
id
.
numberTextView
};
SimpleCursorAdapter
myAdapter
;
myAdapter
=
new
SimpleCursorAdapter
(
this
,
R
.
layout
.
simplecursorlayout
,
myCursor
,
fromColumns
,
toLayoutIDs
);
myListView
.
setAdapter
(
myAdapter
);
|