Android 自定义BaseAdapter

不要对俺的贴图做评价

看一下代码实现

package com.android.wei.zidingyib;import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.ListView;import java.util.*;public class MyActivity extends Activity {     private ListView listView;    private ImageButton imageButton;    private ListViewAdapter listViewAdapter;    private List<Map<String,Object>> listItems;    private Integer[] imgeIDs = {    R.drawable.niao,R.drawable.niao,R.drawable.rui,R.drawable.rui,    R.drawable.ning,R.drawable.ning    };    private String[] goodsNames={    "土豆丝","土豆块","土豆泥","红烧土豆",    "麻辣土豆","清蒸土豆"    };    private String[] goodsDetails={    "土豆丝:便宜又好吃","土豆丝:便宜又好吃","土豆丝:便宜又好吃",    "土豆丝:便宜又好吃","土豆丝:便宜又好吃","土豆丝:便宜又好吃",    };    private int[] money={    2,3,3,10,8,13    };       public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        listView=(ListView) this.findViewById(R.id.listview);        imageButton = (ImageButton) this.findViewById(R.id.imagebutton);        imageButton.setOnClickListener(new  ClickEvent());        listItems = getListItems();        listViewAdapter = new ListViewAdapter(this,listItems);        listView.setAdapter(listViewAdapter);    }    private List<Map<String,Object>> getListItems(){    List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();    for(int i=0;i<goodsNames.length;i++){    Map<String,Object> map = new HashMap<String,Object>();    map.put("image", imgeIDs[i]);    map.put("title", goodsNames[i]);    map.put("info", money[i]+"元");    map.put("detail", goodsDetails[i]);    listItems.add(map);    }    return listItems;    }    class ClickEvent implements OnClickListener{    public void onClick(View v){    String goodsList="";    int sun=0;    for(int i=0;i<listItems.size();i++){    goodsList += listViewAdapter.hasChecked(i)?goodsNames[i]+" ":"";    sun +=listViewAdapter.hasChecked(i)?money[i]:0;        }    new AlertDialog.Builder(MyActivity.this)    .setTitle("点菜清单")    .setMessage("你好,你选择的菜:\n"+goodsList+"\n"+"总消费额为:"+sun+"元")    .setPositiveButton("确定",null)    .show();        }    }}
package com.android.wei.zidingyib;
import java.util.List;import java.util.Map;import android.app.AlertDialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ImageView;import android.widget.TextView;public class ListViewAdapter extends BaseAdapter{    private Context context;        private List<Map<String,Object>> listItems;        private LayoutInflater listContainer;        private boolean[] hasChecked;    public final class ListItemView{    public ImageView image;    public TextView title;    public TextView info;    public CheckBox check;    public Button detail;    }        public ListViewAdapter(Context context,List<Map<String,Object>> listItems){    this.context = context;    listContainer = LayoutInflater.from(context);    this.listItems = listItems;    hasChecked = new boolean[getCount()];    }@Overridepublic int getCount() {// TODO Auto-generated method stubreturn listItems.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}private void checkedChange(int checkedID){hasChecked[checkedID] = !hasChecked[checkedID];}public boolean hasChecked(int checkedID){return hasChecked[checkedID];}private void showDetailInfo(int clickID){new AlertDialog.Builder(context)   .setTitle("本菜详情:"+listItems.get(clickID).get("title"))   .setMessage(listItems.get(clickID).get("detail").toString())       .setPositiveButton("确定",null)       .show();}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {final int selectID= position;ListItemView listItemView = null;if(convertView ==null){listItemView = new ListItemView();convertView = listContainer.inflate(R.layout.list_item, null);//获得控件对象listItemView.image =(ImageView) convertView.findViewById(R.id.imageitem);listItemView.title =(TextView) convertView.findViewById(R.id.textview);listItemView.info =(TextView) convertView.findViewById(R.id.textview1);listItemView.detail=(Button) convertView.findViewById(R.id.button);listItemView.check = (CheckBox) convertView.findViewById(R.id.checkItem);   //设置空间集到convertViewconvertView.setTag(listItemView);}else{listItemView = (ListItemView) convertView.getTag();}//设置文字图片listItemView.image.setBackgroundResource((Integer)listItems.get(position).get("image"));listItemView.title.setText((String)listItems.get(position).get("title"));listItemView.info.setText((String) listItems.get(position).get("info"));listItemView.detail.setText("本菜介绍");listItemView.detail.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshowDetailInfo(selectID);}});listItemView.check.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){checkedChange(selectID);}});return convertView;}}

更多相关文章

  1. #土豆记事#教你开发Android App之 —— Hello Android
  2. 上优酷土豆,再也不用看广告啦!

随机推荐

  1. 【Android】通过耳机调起语音助手App配置
  2. Android(安卓)source 的网址 及 学习网址
  3. Android关于8.0以上Service服务相关问题
  4. Android(安卓)系统(84)---查看分区的大小
  5. Android判断下载File是否为apk文件
  6. Android复习(三)
  7. Android(安卓)Design Support Library
  8. 自定义android模块不编译的问题
  9. Android(安卓)Studio常见错误及解决方法
  10. Android实现振动效果