Android學習筆記—第四章 Android開發組件2

第四章 Android開發組件2

  1. 列表類組件

    (1)ListView組件:以垂直列表的形式列出需要顯示的列表項

    相關屬性:

    a. android:divider  用於爲列表視圖設置分隔條,可以用顏色或者圖片資源

    b. android:dividerHeight  設置分隔條的高度

    c. android:entries  通過數組資源爲ListView指定列表項

    d. android:footerDividersEnabled  設置是否在footerView之前繪製分隔條,默認爲true。

    e. android:headerDividersEnabled  設置是否在headerView之後繪製分隔條,默認爲true。

    (2)ListView使用步驟:

    a. 拖入一個ListView控件,高度改爲match_parent

    b. 新建一個佈局xml文件,設定每行顯示的樣式

    c. 創建一個類MyAdapter繼承BaseAdapter

    getView()方法:設置每行數據顯示及每行顯示樣式

    getCount()方法:顯示的行數,當返回值爲0時,getView()方法不會被調用,顯示爲空白

    d. 創建適配器對象

    MyAdapter adapter = new MyAdapter();

    e. 爲ListView設置適配器

    listView.setAdapter(adapter);

    f. 添加headview和footview(必須在設置適配器之前

    View headview = getLayoutInflater.inflate(R.layout.head,null);

    View footview = getLayoutInflater.inflate(R.layout.foot,null);

    listView.addHeadView(headview);

    listView.addFootView(footview);

    (3)ListView的優化

    上下滑動會不斷觸發getview()方法

    解決方法:複用行佈局,減少控件查找

    //創建一個類,聲明幾個變量(變量類型和數量與佈局xml文件中包含的控件一致)

    class ViewHolder{

        View view1;

        View view2;

        ......

    }

    //聲明成員變量

    View inflate;

    ViewHolder  holder;

    //優化

    if(convertView==null){

        //創建一個ViewHolder對象

        //得到佈局轉換器對象

        LayoutInflater inflater = getLayoutInflate();

        //將佈局xml文件轉換爲佈局對象

        inflate = inflater.inflate(R.layout.listItem,null);

        //查找控件

        holder.view1 = inflate.findViewById(R.id.view1);

        holder.view2 = inflate.findViewById(R.id.view2);

        //設置一個標籤

        infalte.setTag(holder);

    }else{

        //替換、複用行佈局

        inflate=convertView;

        holder = (ViewHolder)inflate.getTag();

    }

    //依據控件類型設置控件內容

    ......

    (3)數據更新

    數據發生變化時,由適配器通知listview更新數據

    adapter.notifyDataSetChanged();

    (4)ListView的點擊事件

    a. 設置點擊監聽

    listview.setOnItemClickListener(new OnItemClickListener){

        @Override

        public void onItemClick(AdapterView<?> parent,View view,int position,long id){

            ......

        }

    }

    備註:當行佈局中存在搶佔焦點的控件時(如Button),ListView的點擊會失效

    解決方式:

    在行佈局中搶佔焦點的控件上設置屬性:android:focusable = "false"

    在行佈局中設置讓所有能搶佔焦點的控件都不搶佔焦點

    android:descendantFocusability = "blocksDescendants"

    b. 設置長按點擊監聽

    listview.setOnItemLongClickListener(new OnItemLongClickListener){

        @Override

        public void OnItemLongClick(AdapterView<?> parent,View view,int position,long id){

            ......

        }

    }

  2. Spinner組件:列表選擇框相當於網頁中的常見的下拉列表框

    getSelectedItem():獲取列表選擇框的選中值

    OnItemSelectedListener:設置列表項的選中事件監聽。

    setDropDownViewResource():爲適配器設置列表框下拉時的選項樣式

  3. Gallery組件:畫廊視圖,可按水平方向顯示內容,並可用手指直接拖動圖片移動,一般用來瀏覽               圖片。通常用BaseAAdapter適配器爲Grallery組件提供要顯示的圖片。

  4. ImageSwitcher組件:圖片切換器,用於實現類似於Windows下“Windows照片查看器”中的“上一                      張”、“下一張”的功能。使用ImageSwitcher必須實現                                      ViewSwitcher.ViewFactory接口,通過makeView()方法創建用於顯示圖片的                      ImageView對象。例如:

    p_w_picpathSwitcher.setInAnimation(xxx);//設置淡入動畫

    p_w_picpathSwitcher.setOutAnimation(xxx);//設置淡出動畫

    p_w_picpathSwitcher.setFactory(new ViewFactoty(){

        @Override

        public View makeView(){

            ImageView p_w_picpathView = new ImageView(MainActivity.this);

            return p_w_picpathView;

        }

    });

    p_w_picpathSwitcher.setImageResource(xxx);  //設置顯示的圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章