自定义BaseAdapter[转]
2014-04-24 14:10
260 查看
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();
}
}
}
自定义类:
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()];
}
@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, 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);
//设置空间集到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(new
CheckBox.OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,boolean
isChecked){
checkedChange(selectID);
}
});
return convertView;
}
}
reprinted from:http://www.oschina.net/code/snippet_203635_7475
相关文章推荐
- Android之自定义实现BaseAdapter(通用适配器二)
- BaseAdapter 自定义适配器的使用以及优化
- 自定义Adapter:BaseAdapter
- 2.3 自定义BaseAdapter
- Android自定义适配器 (BaseAdapter)及优化
- Android 自定义BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- 自定义ListView ,适配器(BaseAdapter)
- BaseAdapter数据刷新,自定义BaseAdapter
- 自定义Adapter(一般继承自BaseAdapter)时遇见的一个小问题
- ListView的优化和自定义适配器继承于BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- Android学习ListView自定义布局,适配器BaseAdapter
- Android基础入门教程——2.4.7 构建一个可复用的自定义BaseAdapter
- 07_Android操作sqllite数据库(包括2中方式操作数据的方式),单元测试,BaseAdapter的使用,自定义view的综合使用案例
- 自定义BaseAdapter
- Android游戏开发23:自定义ListView通用适配器(BaseAdapter)之全方位详解
- 继承自baseAdapter的自定义适配器无法自动回调getView方法的问题
- ListView应用Demo使用自定义的适配器继承BaseAdapter
- ListView 自定义BaseAdapter实现单选打勾(无漏洞)