重写gallery 的 BaseAdapter

简介: 参考:http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html  (引用其中代码时Android 要改成 android) package mobi.

参考:http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html  (引用其中代码时Android 要改成 android)

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];   

    }

@Override

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;   

    }   

}

目录
打赏
0
0
0
0
22
分享
相关文章
ListView和ArrayAdapter、SimpleAdapter适配器的简单使用
ListView和ArrayAdapter、SimpleAdapter适配器的简单使用
Android——RecyclerView简单实现及Viewbinding优化
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。
444 0
RecyclerView#Adapter#notifyDataSetChanged方法后,为何还会新建ViewHolder?
RecyclerView#Adapter#notifyDataSetChanged方法后,为何还会新建ViewHolder?
BaseAdapter 优化
学习ListView的优化很重要,而本节针对的是BaseAdapter的优化,优化的两点有,复用convertView 以及使用ViewHolder重用组件,不用每次都findViewById,我们具体通过代码来体会吧。
UI组件-ImageView及其子类
前言 时间有限,追索生命的诚意和真实,比什么都重要。 ImageView组件 ImageView继承自View组件,它的主要功能是用于显示任何Drawable对象。
939 0
UI组件-TextView及其子类
前言 时间就像海绵里的水,只要愿挤,总还是有的。 TextView组件 TextView直接继承了View,它的作用就是在界面上显示文本。 代码示例 效果 Screenshot_20171018-095040.png 提示 andriod:drawableBottom属性,在文本框内文本的底端绘制指定图像。
1160 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等