- 浏览: 41804 次
- 性别:
- 来自: 日照
最新评论
-
wuhanchendalong:
哥们你能把这个源代码的布局文件发给我好吗?我看看 非常感谢 ...
Android 自定义BaseAdapter -
greatghoul:
antkingwei 写道greatghoul 写道有木有跨平 ...
Java 在CS客户端做网页连接 -
antkingwei:
greatghoul 写道有木有跨平台的实现方法?什么意思?
Java 在CS客户端做网页连接 -
greatghoul:
有木有跨平台的实现方法?
Java 在CS客户端做网页连接
不要对俺的贴图做评价
看一下代码实现
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()]; } @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; } }
发表评论
-
Android开发中用到的几种多线程
2012-03-12 10:42 2172在开发工程中线程可以帮助我们提高运行速度,Andro ... -
android 数据库随APK打包发布
2012-03-09 22:01 2297有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做 ... -
goolge 地图地址位置解析
2012-02-24 16:50 1173Java代码package com.android.yibai ... -
Android ImageView使用网上图片资源
2012-02-24 16:47 1760Java代码package com.android.antk ... -
Android手机与WEB服务器通信
2012-02-24 12:30 2744Tomcat服务器 package com.edu.q ... -
手机于PC服务器通信
2012-02-24 12:16 1103手机客户端 package com.newsocket ... -
在google地图上画出两点的行走路线
2012-02-23 12:56 1737新建一个图层 package com.androi ... -
goolge 地图弹出气泡
2012-02-23 12:50 1597新建图层 package com.android.a ... -
GPS定位那点事
2012-02-22 15:30 1453<?xml version="1.0 ... -
手机上使用google 搜索引擎
2012-02-22 15:25 1141<?xml version="1.0&q ... -
android phoneGap开发
2012-01-15 08:42 1052PhoneGap是一个用基于HTML,CSS和JavaScri ... -
Android Google地图开发入门
2011-12-29 17:17 1805Android开发要连接GoogelMaps使用MapVi ... -
集中管理Activity
2011-12-25 15:21 1120有时候在设计软件的时候布局复杂的话不利于查看跟更改,这时 ... -
Android Dilaog 设置没有标题注意的地方
2011-12-23 12:51 1397layoutInflater = LayoutInfla ... -
AndroidUI设计美化
2011-12-18 15:52 957不要说Android中UI做的丑是因为不会美化,其实做一个 ... -
Android QQ多级列表的实现
2011-12-17 19:40 2320主类: package com.android.qu ... -
Android SharedPreferences应用解析
2011-12-11 09:52 1194在任何软件中,数据存储都是非常重要的,一定程度上来说它是软件 ... -
Android GridView,Gallery动态更新数据
2011-12-09 00:05 3080package com.android.wei.z ... -
Android 划出一个半透明的PopupWindow
2011-12-07 22:22 2755效果图好像不显示了package com.android ... -
Android 3D壁纸开发设计
2011-11-30 19:34 1064希望能给需要得人一点帮助,这个触屏可以改变壁纸映射, J ...
相关推荐
总之,`BaseAdapter`是Android开发中的核心组件之一,掌握其自定义方法对于提升应用的用户体验至关重要。通过合理设计数据模型和视图布局,我们可以创建出功能强大且灵活的列表视图。在实际项目中,还可以结合`...
至此,我们已经掌握了在Android Studio中使用ListView和自定义BaseAdapter的基本步骤。通过这种方式,你可以灵活地展示各种类型的数据,并且可以通过扩展Adapter来实现更复杂的功能,如点击事件、长按事件等。在实际...
通过以上所述,我们可以理解自定义BaseAdapter在Android开发中的重要性和实现方式,以及如何通过优化使其具有可复用性。这不仅可以提高代码质量,还能降低维护成本,是Android开发中不可或缺的一个技术点。
**四、自定义BaseAdapter示例** 创建一个自定义的BaseAdapter通常需要以下步骤: 1. 定义数据模型类,例如`MyItem`,包含需要显示的属性。 2. 创建继承自BaseAdapter的自定义适配器,如`MyAdapter`,并实现其抽象...
以上就是关于“Android自定义adapter的listview”的主要知识点。自定义Adapter是Android开发中的核心技能之一,掌握好这一技巧,能帮助我们实现各种复杂的界面效果。通过不断实践和优化,我们可以在保证性能的同时,...
在创建自定义BaseAdapter时,你需要继承BaseAdapter并实现以上方法。首先,你需要创建一个包含数据的列表,可以是ArrayList或其他集合类型。然后,为每个列表项创建一个布局,并在`getView()`方法中设置相应的数据。...
总之,自定义BaseAdapter是Android开发中的常见任务,通过它,我们可以将各种复杂的数据结构映射到用户界面,实现动态、丰富的列表展示。理解并熟练运用BaseAdapter对于提升Android开发技能至关重要。
`BaseAdapter`是Android SDK提供的一种基本的Adapter实现,开发者可以根据自己的需求进行自定义,以适应各种复杂的视图显示需求。本篇文章将深入探讨`BaseAdapter`的工作原理以及如何自定义`BaseAdapter`。 首先,`...
BaseAdapter是Android SDK提供的一种通用的适配器,它允许自定义数据模型并将其展示在视图列表中。在未封装的情况下,我们通常需要实现BaseAdapter的以下方法: 1. `getCount()`: 返回数据集的大小。 2. `getItem...
通过上述知识点的学习和实践,开发者可以创建一个高效、灵活的Android自定义瀑布流布局。在`app3`这个项目中,我们可以预见到包含了一个自定义的ViewGroup,可能还会有相关的Adapter实现数据绑定,以及图片加载库的...
本篇文章将深入探讨如何优化自定义BaseAdapter的布局,提高应用的运行效率。 首先,我们来看一个简单的优化案例。在`MainActivity.java`中,我们创建了一个ListView,并通过自定义的`MyAdapter`为其提供数据。`...
在Android开发中,ListView是展示大量数据常用的组件,而BaseAdapter是它的重要伙伴,用于将数据绑定到ListView的各个Item视图上。本教程通过一个Eclipse下的Android工程实例,详细讲解了BaseAdapter的使用方法以及...
实现的原理是 添加一ImageAdapter并设置给Gallery对象,设置一个itemclickListener并Toast被点击图片的位置,然后改写BaseAdapter自定义一ImageAdapter class ,创建ImageAdapter的构造器,取得Gallery属性的Index...
为了实现自定义的下拉刷新和上拉加载,我们需要扩展BaseAdapter或RecyclerView.Adapter,并添加相关逻辑来处理刷新和加载更多事件。 4. **监听器**:在适配器中,你需要实现OnScrollListener接口,监听滚动事件。当...
总之,自定义Adapter是Android开发中的一个重要技能,它允许开发者灵活地控制数据的显示方式,同时提高了应用的可扩展性和可维护性。通过实践和研究这个自定义Adapter的代码,你将能更好地掌握这一核心技术。
一、Android自定义控件基础 在Android中,自定义控件通常分为两种类型:一是扩展已有的View或ViewGroup类,二是完全自定义的新控件。在这个案例中,我们将扩展ListView或者RecyclerView,因为它们适合用来展示列表...
这时,我们可以自定义ListView的Adapter,继承自BaseAdapter,重写其中的方法,如getCount、getItem、getView等,以实现自定义的数据绑定和视图渲染。此外,还可以通过设置OnItemClickListener或...
`BaseAdapter`是与ListView交互的核心类,它允许我们自定义数据源并将其绑定到ListView上。本教程将深入探讨如何利用BaseAdapter来整合ListView,创建一个动态、可定制的数据展示界面。 首先,`BaseAdapter`是...