天天看點

重寫gallery 的 BaseAdapter

package mobi.game.adapter;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import mobi.game.gameProcess.R;

import mobi.game.tool.view.MainMenuItemView;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

/**

 * 放入gallery中的單個元素的view

 * **/

public class MainMenuAdapter extends BaseAdapter{

private Context mContext;//存放容器

private List<Map<String, Object>> listItems;    //關卡資訊集合  

private LayoutInflater listContainer;           //視圖容器  

private boolean[] hasChecked;                   //記錄商品選中狀态   

private String title[] = {"菜鳥級","高手級","大師級"};

private Integer[] imgeIDs = {R.drawable.beauty1,R.drawable.beauty2,R.drawable.beauty3}; //資料 

    private String[] score = {"100", "200","300"};   

    private Integer[] gradeIDs = {R.drawable.score_img,R.drawable.score_img,R.drawable.score_img};   

* 擴充卡

* **/

public MainMenuAdapter(Context context){

mContext = context;

//得到資料

this.listItems = this.getListItems();

listContainer = LayoutInflater.from(context);   //建立視圖容器并設定上下文 

hasChecked = new boolean[getCount()];   

}

* 得到個數

@Override

public int getCount(){

return listItems.size();

* 得到位置

public Object getItem(int position){

return null;

public long getItemId(int position) {

        return position;

    }

/**  

     * 記錄勾選關卡

     * @param checkedID 選中的關卡序号  

     */  

    private void checkedChange(int checkedID) {   

        hasChecked[checkedID] = !hasChecked[checkedID];   

    }   

    /**  

     * 判斷物品是否選擇  

     * @param checkedID 關卡序号  

     * @return 傳回是否選中狀态 

    public boolean hasChecked(int checkedID) {   

        return hasChecked[checkedID];   

public View getView(int position, View convertView, ViewGroup parent) {

//        final int selectID = position;   //設定選中項  

        MainMenuItemView  menuItemView = null;     //自定義視圖   

        if (convertView == null) {   

        menuItemView = new MainMenuItemView();    

            convertView = listContainer.inflate(R.layout.main_menu_item, null);   //擷取list_item布局檔案的視圖   

            menuItemView.setTitle((TextView)convertView.findViewById(R.id.titleItem));//擷取控件對象 

            menuItemView.setImage((ImageView)convertView.findViewById(R.id.imageItem));

            menuItemView.setScore((TextView)convertView.findViewById(R.id.main_score));

            menuItemView.setGrade((ImageView)convertView.findViewById(R.id.main_grade));

            convertView.setTag(menuItemView);   //設定控件集到convertView   

        }else {   

        menuItemView = (MainMenuItemView)convertView.getTag();   

        }   

        //設定文字和圖檔   

        menuItemView.getTitle().setText((String)listItems.get(position).get("title"));

        menuItemView.getImage().setBackgroundResource((Integer)listItems.get(position).get("image"));

        menuItemView.getScore().setText((String)listItems.get(position).get("score"));

        menuItemView.getGrade().setBackgroundResource((Integer)listItems.get(position).get("grade"));

        return convertView;  

     * 初始化關卡資訊  

    private List<Map<String, Object>> getListItems() {   

        List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();   

        for(int i = 0; i < title.length; i++) {   

            Map<String, Object> map = new HashMap<String, Object>();    

            map.put("title", title[i]); //關卡标題

            map.put("image", imgeIDs[i]);              //關卡圖檔

            map.put("score", score[i]); //關卡分數  

            map.put("grade", gradeIDs[i]); //過卡等級 

            listItems.add(map);   

        }      

        return listItems;   

上一篇: GalleryView
下一篇: 橫屏 堅屏

繼續閱讀