自定义BaseAdapter[转]

来源:互联网 发布:centos 6 sz 编辑:程序博客网 时间:2024/05/22 15:22

主类:
public classMyActivity extends Activity {
 
   private ListView listView;
   private ImageButtonimageButton;
   private ListViewAdapterlistViewAdapter;
   privateList<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 = newListViewAdapter(this,listItems);
      listView.setAdapter(listViewAdapter);
   }
   privateList<Map<String,Object>>getListItems(){
  List<Map<String,Object>>listItems = newArrayList<Map<String,Object>>();
   for(inti=0;i<goodsNames.length;i++){
   Map<String,Object>map = newHashMap<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 implementsOnClickListener{
   public void onClick(View v){
   String goodsList="";
   int sun=0;
   for(inti=0;i<listItems.size();i++){
   goodsList +=listViewAdapter.hasChecked(i)?goodsNames[i]+"":"";
   sun+=listViewAdapter.hasChecked(i)?money[i]:0;
  
   }
   newAlertDialog.Builder(MyActivity.this)
   .setTitle("点菜清单")
  .setMessage("你好,你选择的菜:\n"+goodsList+"\n"+"总消费额为:"+sun+"元")
  .setPositiveButton("确定",null)
   .show();
  
   }
   }
}

自定义类:
public class ListViewAdapter extendsBaseAdapter{
    private Contextcontext;
    
    privateList<Map<String,Object>>listItems;
    
    private LayoutInflaterlistContainer;
    
    private boolean[]hasChecked;
    public final classListItemView{
    public ImageView image;
    public TextView title;
    public TextView info;
    public CheckBox check;
    public Button detail;
    }
    
    publicListViewAdapter(Contextcontext,List<Map<String,Object>>listItems){
    this.context = context;
    listContainer =LayoutInflater.from(context);
    this.listItems =listItems;
    hasChecked = newboolean[getCount()];
    }
@Override
public int getCount() {
// TODO Auto-generated method stub
return listItems.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 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();
}

@Override
public View getView(int position, View convertView, ViewGroupparent) {
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);
  //设置空间集到convertView
convertView.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(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDetailInfo(selectID);
}
});
listItemView.check.setOnCheckedChangeListener(newCheckBox.OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,booleanisChecked){
checkedChange(selectID);
}
});
return convertView;
}

}


reprinted from:http://www.oschina.net/code/snippet_203635_7475
0 0
原创粉丝点击