對 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就可以修改字體大小顏色背景......
回覆刪除