ListActivity簡單的說就是ListView和Activity的結合,跟ListView和Activity組合實現的沒有什么很大的差別,主要是比較方便。但在實現時,有幾點要注意。
1、ListActivity可以不用setContentView(R.layout.main),它默認是LIstView占滿屏。
2、如果想在屏幕中顯示其他控件,如文本框和按鈕之類,可以采用如下方法:
a、代碼中添加:setContentView(R.layout.main)
b、在 main.xml 文件中,添加一個LIstView控件,和一個 TextView 控件,注意它們 id 必須為"@id/android:list"、 "@id/android:empty";前一個表示匹配的ListView,后一個表示若LIstView沒有內容則顯示的提示:代碼如下:
1)main.xml布局文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
LinearLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
>
<
EditText
android:id
=
"@+id/et_item"
android:layout_width
=
"212px"
android:layout_height
=
"wrap_content"
>
</
EditText
>
<
Button
android:id
=
"@+id/bt_add"
android:layout_width
=
"83px"
android:layout_height
=
"51px"
android:text
=
"添加"
>
</
Button
>
</
LinearLayout
>
<
ListView
android:id
=
"@id/android:list"
android:layout_width
=
"fill_parent"
android:layout_height
=
"0dip"
android:layout_weight
=
"1"
android:drawSelectorOnTop
=
"false"
/>
<
TextView
android:id
=
"@id/android:empty"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Can not find the file!"
/>
</
LinearLayout
>
|
下面是程序截圖和代碼:
LIstView Item的布局文件list_item.xml
1
2
3
4
5
6
7
8
9
10
11
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
android:id
=
"@+id/LinearLayout01"
android:layout_height
=
"wrap_content"
>
<
ImageView
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:id
=
"@+id/ItemImage"
/>
<
TextView
android:layout_height
=
"wrap_content"
android:textSize
=
"20dip"
android:layout_width
=
"fill_parent"
android:id
=
"@+id/ItemTitle"
/>
</
LinearLayout
>
|
2)代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package
com.myandroid.test;
import
java.util.ArrayList;
import
java.util.HashMap;
import
android.app.ListActivity;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.ListView;
import
android.widget.SimpleAdapter;
public
class
ListActivityImpl
extends
ListActivity {
private
Button bt_add;
private
EditText et_item;
private
ArrayList<HashMap<String, Object>> listItems;
//存放文字、圖片信息
private
SimpleAdapter listItemAdapter;
//適配器
@Override
public
void
onCreate(Bundle icicle) {
super
.onCreate(icicle);
setContentView(R.layout.main);
bt_add = (Button)findViewById(R.id.bt_add);
et_item = (EditText)findViewById(R.id.et_item);
initListView();
this
.setListAdapter(listItemAdapter);
bt_add.setOnClickListener(
new
ClickEvent());
}
/**
* 設置適配器內容
*/
private
void
initListView() {
listItems =
new
ArrayList<HashMap<String, Object>>();
for
(
int
i=
0
;i<
10
;i++) {
HashMap<String, Object> map =
new
HashMap<String, Object>();
map.put(
"ItemTitle"
,
"Music: "
+i);
//文字
map.put(
"ItemImage"
, R.drawable.music);
//圖片
listItems.add(map);
}
//生成適配器的Item和動態數組對應的元素
listItemAdapter =
new
SimpleAdapter(
this
,listItems,
// listItems數據源
R.layout.list_item,
//ListItem的XML布局實現
new
String[] {
"ItemTitle"
,
"ItemImage"
},
//動態數組與ImageItem對應的子項
new
int
[ ] {R.id.ItemTitle, R.id.ItemImage}
//list_item.xml布局文件里面的一個ImageView的ID,一個TextView 的ID
);
}
@Override
protected
void
onListItemClick(ListView l, View v,
int
position,
long
id) {
// TODO Auto-generated method stub
Log.e(
"position"
,
""
+ position);
setTitle(
"你點擊第"
+position+
"行"
);
}
class
ClickEvent
implements
OnClickListener {
@Override
public
void
onClick (View v) {
// 向ListView里添加一項
HashMap<String, Object> map =
new
HashMap<String, Object>();
map.put(
"ItemTitle"
,
"Music: "
+ et_item.getText().toString());
map.put(
"ItemImage"
, R.drawable.music);
//每次都放入同樣的圖片資源ID
listItems.add(map);
//重新設置適配器
ListActivityImpl.
this
.setListAdapter(listItemAdapter);
}
}
}
|
這里也涉及到ListView的圖片、文字添加方式,本程序是一個圖片一行文字