Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android中的高級組件(二)(Spinner,ListView,GridView)

android中的高級組件(二)(Spinner,ListView,GridView)

編輯:關於Android編程

Spinner 列表選擇框

Spinner是一個下拉列表,通常用於選擇一系列可選擇的列表項,它可以使用適配器,也可以
直接設置數組源。

android:entries=”@array/xx”/>//設置數組源

通過setOnItemSelectedListener來監聽他的改變

示例圖如下;

這裡寫圖片描述

public class MainActivity extends Activity {
    Spinner spinner;
    String[] array = { "", "普快", "空調", "特快", "動車", "高鐵" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter adapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_item, array);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView parent, View view,
                    int position, long id) {
                // position 就是選中的條目,從0開始
                String zheng = getResources().getStringArray(R.array.select)[position];
                Toast.makeText(getBaseContext(), zheng, Toast.LENGTH_SHORT)
                        .show();
            }

            @Override
            public void onNothingSelected(AdapterView parent) {
                // 從沒觸發過
                Log.e("TAG", "------------->>沒有選擇");
            }
        });

    }

}


//xml中的配置



    

ListView列表視圖

ListView是Android中最重要的一種視圖,基本上是個軟件基本都會使用ListView,它以垂直列
表形式列出需要顯示的列表,只有通過Adapter才可以把列表中的數據映射到ListView中。
列表的顯示需要三個元素:
ListVeiw 用來展示列表的View。
適配器用來把數據映射到ListView上的中介。
數據具體的將被映射的字符串,圖片,或者基本組件

XML配置:
1.

實例圖如下:

這裡寫圖片描述

public class MainActivity extends Activity {


    String[] names = { "范冰冰", "李晨", "王寶強", "小澤瑪利亞", "吳京" };
    String[] contents = {
            "簡介:范冰冰,1981年9月16日生於山東青島,華語影視女演員、歌手、制片人。1996年參演電視劇《女強人》。1998年主演電視劇《還珠格格》系列成名,2001年起投身大銀幕。",
            "簡介:李晨,1978年11月24日出生於北京市,中國內地影視男演員、監制、賽車手,畢業於北京群星藝術學院。",
            "王寶強,1984年5月29日出生於河北省邢台市,中國內地男演員、導演。王寶強6歲開始練習武術,8歲在嵩山少林寺做俗家弟子。2003年,憑借劇情片《盲井》獲得第40屆台灣電影金馬獎最佳新演員獎[1-2]  。2004年,因參演馮小剛執導的劇情片《天下無賊》而獲得關注。",
            "簡介:小澤瑪利亞(日語:小澤マリア、おざわ まりあ,英語:Ozawa Maria,1986年1月8日-)日本AV女優,出生於日本北海道,混血兒(父親是法裔加拿大人,母親是日本人),擁有歐洲人的面容和東方人的嬌小體格。",
            "姓名:吳京生日:1974年04月03日職業:演員,導演簡介:吳京,1974年04月3日出生於北京,中國內地演員,導演。畢業於北京體育大學。1989年進入北京市武術隊" };
    int[] ids = { R.drawable.fbb, R.drawable.lichen, R.drawable.wangbaoqiang,R.drawable.xz,R.drawable.wj };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView lv = (ListView) findViewById(R.id.lv);

        //適配器
        List> list = new ArrayList>();

        final List list2 = new ArrayList();
        for (int i = 0; i < 5; i++) {
            HashMap map = new HashMap();
            map.put("img", ids[i]);
            map.put("name", names[i]);
            map.put("content", contents[i]);
            list.add(map);

            list2.add(new Article(ids[i],names[i] , contents[i]));
        }

        MyBaseAdapter2 adapter = new MyBaseAdapter2(this,list2);
        lv.setAdapter(adapter);


    }


    public static class Article {
        String name;
        String content;
        int id;

        @Override
        public String toString() {
            return "int="+ id +",name=" + name + ", content=" + content + "]";
        }

        public Article(int id,String name, String content) {
            super();
            this.id = id;
            this.name = name;
            this.content = content;
        }

    }
}

//自己寫的一個適配器

public class MyBaseAdapter2 extends BaseAdapter {

    private Context context;
    private List
list; public MyBaseAdapter2(Context context, List list) { this.context = context; this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub return list == null ? 0 : list.size(); } @Override public Article getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(context, R.layout.item_layout, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else holder = (ViewHolder) convertView.getTag(); holder.setData(list.get(position)); return convertView; } // 對於一個較復雜的布局,組件比較多 class ViewHolder// 保存的是所有的布局上的組件 { ImageView img; TextView name; TextView content; public ViewHolder(View convertView) { img = (ImageView) convertView.findViewById(R.id.img); name = (TextView) convertView.findViewById(R.id.text1); content = (TextView) convertView.findViewById(R.id.text2); // convertView.setTag(this); } public void setData(Article a) { img.setImageResource(a.id); name.setText(a.name); content.setText(a.content); } } }
//主xml


  




//顯示樣式的xml


    

    
    


GridView網格視圖

GridView網格視圖是按照行,列分布的方式來顯示多個組件,通常用於顯示圖片或是圖標等,在使
用網格視圖時,首先需要要在屏幕上添加GridView組件。

常用屬性:
1. android:columnWidth 用於設置列的寬度
2. android:gravity 用於設置對齊方式
3. android:horizontalSpacing 用於設置各元素之間的水平間距
4. android:numColumns 用於設置列數
5. android:stretchMode 用於設置拉伸模式,其中屬性值可以是
6. //none(不拉伸),
7. //spacingWidth(僅拉伸元素之間的間距),
8. //columnWidth(僅拉伸表格元素本身)或
9. //spacingWidthUniform(表格元素本身,元素之間的間距一起拉伸)
10. android:verticalSpacing 用於設置各元素之間的垂直間距

GridView與ListView一樣,都需要通過Adapter來提供顯示的數據,ListView可以使用android:entries 來得到數據,但GridView不可以,必須通過適配器來為其添加數據。

GridView的事件和ListView一樣,都是設
置 setOnItemClickListener(OnItemClickListener listener);

示例圖如下:

這裡寫圖片描述


public class MainActivity extends Activity {

    GridView gr;
    int[] ids = { R.drawable.p01, R.drawable.p02, R.drawable.p03,
            R.drawable.p04, R.drawable.p05, R.drawable.p06, R.drawable.p07,
            R.drawable.p08, R.drawable.p09, R.drawable.p10, R.drawable.p11,
            R.drawable.p12 };//圖片需要自己導入drawable目錄下

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //這是用自己的布局
        setContentView(R.layout.activity_main);
        gr =  (GridView) findViewById(R.id.gr);


        List> data = new ArrayList>();
        for (int i = 0; i < 12; i++) {
            HashMap map = new HashMap();
            map.put("img1", ids[i]);
            data.add(map);
        }

        SimpleAdapter adapter = new SimpleAdapter(this, data,
                R.layout.item_star, new String[] { "img1" },
                new int[] { R.id.img1 });

        //spinner.setAdapter(adapter);
        gr.setAdapter(adapter);


        gr.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View view,
                    int position, long id) {
                final ImageView iv = (ImageView) findViewById(R.id.img2);
                if (iv==null) {
                     Toast.makeText(MainActivity.this, "xuanzhongl"+position, Toast.LENGTH_SHORT).show();
                }else {
                    iv.setImageResource(ids[position]);
                } 


            }
        });
    }

}
//主xml


    

    


//顯示樣式的xml


    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved