2012年10月4日 星期四

Android 使用 ListView 和 ListActivity



FROM

http://changyy.pixnet.net/blog/post/30715882-a.......

http://blog.joomla.org.tw/android/.......








對 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 }
                )
        );
}

0 意見:

張貼留言

 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template