對 HTML 來說,所謂的 ListView 大概稱得上網頁上常看到的 ul、ol、dt 或是 table 吧!這東西真的是萬用的好工具,最直觀的排版,正所謂規規矩矩,不美也不會太醜。最近我終於開始在 Android 上使用這個東西了,光這功能就能讓你完成九成的工作了。更多 ListView 跟 ListActivity 的資訊,請參考官網的介紹,這邊僅簡易的筆記。
在 MyActivity 上呼叫自訂的 MyListActivity 的方式:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent mIntent = new Intent();
mIntent.setClass(this, MyListActivity.class);
startActivity( mIntent );
}
在 MyListActivity 中,使用簡易的排版。範例一,使用系統內建 android.R.layout.simple_list_item_1 排版:
程式碼:
package com.example.study;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class MyListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" };
setListAdapter(
new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
values)
);
}
}
範例二,使用系統內建 android.R.layout.simple_list_item_2 排版:
程式碼:
package com.example.study;
import android.app.ListActivity;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.HashMap;
import android.widget.SimpleAdapter;
public class ProgramListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String ID_TITLE = "TITLE", ID_SUBTITLE = "SUBTITLE";
ArrayList<HashMap<String,String>> myListData = new ArrayList<HashMap<String,String>>();
String[] titles = new String[]{ "Title1" , "Title2", "Title3" };
String[] subtitles = new String[]{ "SubTitle1" , "SubTitle2", "SubTitle3" };
for( int i=0;i<titles.length ; ++i) {
HashMap<String,String> item = new HashMap<String,String>();
item.put(ID_TITLE,titles[i]);
item.put(ID_SUBTITLE,subtitles[i]);
myListData.add(item);
}
setListAdapter( new SimpleAdapter(
this,
myListData,
android.R.layout.simple_list_item_2,
new String[] { ID_TITLE, ID_SUBTITLE },
new int[] { android.R.id.text1, android.R.id.text2 } )
);
}
}
其中 android.R.layout.simple_list_item_1.xml 和 android.R.layout.simple_list_item_2.xml 的資料,可以查閱自己用的 SDK 囉,例如使用 Android 2.2 時,在 Eclipse 的 Package Explorer 中,可以瀏覽 Android 2.2 -> android.jar -> res.layout 並在裡頭找到。
此處提的範例都是 ListActivity 的,如果你在你的 Activity 的 layout 上擺了一個 ListView 的話,那只需要先用 findViewById 後,就可以仿照 ListActivity 把資料餵進去,如:
ListView mListView = (ListView)findViewById(R.id.listView1);
if( mListView != null ) {
mListView.setAdapter(
new SimpleAdapter(
this,
mDataSource ,
android.R.layout.simple_list_item_2,
new String[] { ID_TITLE, ID_DETAL },
new int[] { android.R.id.text1, android.R.id.text2 }
)
);
}
看不出來跟ListView差在哪
回覆刪除如想更改LIST ACTIVITY裏的字體大小, 那應在那裏調較?
回覆刪除如想更改LIST ACTIVITY裏的字體大小, 那應在那裏調較?
回覆刪除作者已經移除這則留言。
回覆刪除建議自定layout取代android.R.layout.simple_list_item_2,android.R.id.text1, android.R.id.text2
回覆刪除自定layout就可以修改字體大小顏色背景......
回覆刪除