- 浏览: 73885 次
- 性别:
- 来自: 广州
最新评论
-
鱼在陆地上跑:
yanjunhui2011 写道http://download ...
Android自适应屏幕方向、大小和分辨率 -
yanjunhui2011:
http://download.csdn.net/detail ...
Android自适应屏幕方向、大小和分辨率 -
鱼在陆地上跑:
sydydream 写道<supports-screen ...
Android自适应屏幕方向、大小和分辨率 -
sydydream:
<supports-screens and ...
Android自适应屏幕方向、大小和分辨率 -
lenomon:
这里有篇实现无下划线的,Android使用TextView实现 ...
通过SpannableString来设置超链接、颜色、字体等属性(转)
转自:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮。添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。但是事实并非这样,因为按钮是无法映射的,即使你成功的用布局文件显示出了按钮也无法添加按钮的响应,这时就要研究一下ListView是如何现实的了,而且必须要重写一个类继承BaseAdapter。下面的示例将显示一个按钮和一个图片,两行字如果单击按钮将删除此按钮的所在行。并告诉你ListView究竟是如何工作的。
效果如下:
实现如下:
列表项的布局文件vlist2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFFFF" android:textSize="22px" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFFFF" android:textSize="13px" /> </LinearLayout> <Button android:id="@+id/view_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/s_view_btn" android:layout_gravity="bottom|right" /> </LinearLayout>
程序代码:
/** * @author allin * */ public class MyListView4 extends ListActivity { private List<Map<String, Object>> mData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mData = getData(); MyAdapter adapter = new MyAdapter(this); setListAdapter(adapter); } private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "G1"); map.put("info", "google 1"); map.put("img", R.drawable.i1); list.add(map); map = new HashMap<String, Object>(); map.put("title", "G2"); map.put("info", "google 2"); map.put("img", R.drawable.i2); list.add(map); map = new HashMap<String, Object>(); map.put("title", "G3"); map.put("info", "google 3"); map.put("img", R.drawable.i3); list.add(map); return list; } // ListView 中某项被选中后的逻辑 @Override protected void onListItemClick(ListView l, View v, int position, long id) { Log.v("MyListView4-click", (String)mData.get(position).get("title")); } /** * listview中点击按键弹出对话框 */ public void showInfo(){ new AlertDialog.Builder(this) .setTitle("我的listview") .setMessage("介绍...") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } public final class ViewHolder{ public ImageView img; public TextView title; public TextView info; public Button viewBtn; } public class MyAdapter extends BaseAdapter{ private LayoutInflater mInflater; public MyAdapter(Context context){ this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return mData.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder=new ViewHolder(); convertView = mInflater.inflate(R.layout.vlist2, null); holder.img = (ImageView)convertView.findViewById(R.id.img); holder.title = (TextView)convertView.findViewById(R.id.title); holder.info = (TextView)convertView.findViewById(R.id.info); holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.img.setBackgroundResource((Integer)mData.get(position).get("img")); holder.title.setText((String)mData.get(position).get("title")); holder.info.setText((String)mData.get(position).get("info")); holder.viewBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showInfo(); } }); return convertView; } } }
发表评论
-
Activity的启动与通信
2012-02-01 17:14 1516Activity是Android组件中最基本也是最常见的组件, ... -
【转】android通过USB使用真机调试程序
2012-02-01 11:04 1127转自:http://www.cnblogs.com/azai/ ... -
【整理】通过ViewPager实现Launcher中的屏幕切换效果
2012-01-30 17:06 2692整理自:http://www.cnmsdn.com/html/ ... -
【转】实现自定义布局的Notification
2012-01-30 15:57 1574转自:http://blog.csdn.net/chenlon ... -
Eclipse 语法自动提示
2012-01-30 09:39 13911. 从Window -> preferences -& ... -
【转】Notification 详解
2012-01-29 16:08 1223转自:http://www.microdu.com/threa ... -
【转】Toast大全(五种情形)建立属于你自己的Toast
2012-01-29 13:51 1102转自:http://www.cnblogs.com/salam ... -
【转】Toast简易消息提示框的使用
2012-01-29 10:46 1261转自:http://www.2cto.com/kf ... -
实现Launcher的抽屉效果
2012-01-19 10:18 1219android 的 launcher 有一个抽屉效果,可以有拉 ... -
【整理】Android animation - 基础
2012-01-18 11:30 898整理自:http://blog.csdn.net/lzx_bu ... -
【转】编写高效的android代码
2012-01-17 10:00 904转自:http://www.2cto.com/kf/20111 ... -
【转】Android 分页控件制成底部菜单
2012-01-16 17:47 1906转自:http://blog.csdn.net/knowhea ... -
【转】android使用分页标签
2012-01-16 15:46 1246转自:http://marshal.easymorse.com ... -
【转】Eclipse调试常用技巧
2012-01-12 11:03 794转:http://chenhaodejia.iteye ... -
【转】Content Provider 基础 之URI
2012-01-12 10:42 1176转自:http://chenhaodejia.it ... -
【转】ImageButton点击背景切换事件
2012-01-12 10:31 2205转自:http://chenhaodejia.iteye.co ... -
【转】ContentProvider基础
2012-01-12 09:26 930转自:http://wq294948004.iteye.com ... -
使用bindService启动服务
2012-01-10 10:32 4939一般情况下我们使用startService(I ... -
Android SDCard操作(文件读写,容量计算)
2011-04-08 00:55 750Android SDCard操作(文件读写,容量计算) ... -
【转】Service创建有两种方法: startService或者bindService
2011-06-18 15:18 1147服务不能自己运行,需要通过调用Context.startSer ...
相关推荐
在自定义Adapter时,我们需要实现四个核心方法:`getCount()`、`getItem(int position)`、`getItemId(int position)`和`getView(int position, View convertView, ViewGroup parent)`。 1. `getCount()`:返回数据...
在这个场景中,我们探讨了如何使用`SimpleAdapter`和自定义`Adapter`来填充ListView,并且在自定义Adapter中添加了删除功能。下面我们将详细讲解这两个方法。 首先,`SimpleAdapter`是Android SDK提供的一种简单...
自定义Adapter需要继承BaseAdapter或者已有的Adapter类,并重写以下关键方法: 1. `getCount()`: 返回列表项的数量。 2. `getItem(int position)`: 根据位置返回列表项的数据对象。 3. `getItemId(int position)`: ...
本教程将详细讲解如何在Android中实现自定义ListView,包括基本的ListView、带图片的ListView以及带有按钮的ListView。 1. **基本的ListView** - 首先,你需要在布局文件中添加ListView元素,并为其设置ID。例如:...
默认的Adapter是BaseAdapter,但通常我们会根据需求自定义Adapter,以便更好地适应不同的数据结构和界面展示。 自定义万能Adapter的核心在于灵活性和复用性。这种Adapter需要能够处理多种类型的View,以适应不同的...
- 自定义一个Adapter,继承自BaseAdapter,用于填充ListView的数据。 - 在getView()方法中,创建并设置自定义的滑动删除View,同时关联数据。 - 在Adapter中添加处理删除逻辑的方法,如onClickDelete(),并在...
在实际应用中,我们经常需要对ListView进行自定义,比如在每个列表项中添加图片和按钮,以增加交互性和功能多样性。本文将深入探讨如何在ListView中添加图片和按钮,并实现它们以及ListView的双监听,以便按钮点击时...
综上所述,实现自滑动删除ListView涉及到了自定义Adapter、手势检测、布局动画以及回调处理等多个方面。通过这些步骤,你可以在Android应用中创建一个功能完善的、仿iOS风格的左滑删除ListView。在实际项目中,可以...
在ListView中,我们通常使用自定义Adapter来连接数据源(如ArrayList)与视图。Adapter是Android中一个非常重要的概念,它充当了数据模型与视图之间的桥梁。 自定义Adapter的创建通常包括以下步骤: 1. 创建一个新...
通过创建自定义布局文件、适配器以及设置按钮监听器,我们可以使ListView的每一项具有交互功能,从而提升应用程序的功能性和用户体验。在实际开发中,可以根据具体需求进行更复杂的定制,例如添加动画、自定义事件...
意味着掌握了含按钮的ListView事件响应后,开发者对于更复杂的ListView定制,如添加ImageView、实现多种类型的列表项(header、footer、item等)或者使用SwipeRefreshLayout等高级特性,都将更加得心应手。...
总的来说,“listview添加按钮”是一个常见的Android开发需求,涉及到ListView的自定义布局、Adapter的使用、事件监听以及可能的数据存储和更新。理解这些知识点对于开发功能丰富的Android应用至关重要。
本教程将详细介绍如何在Android中简单使用ListView和Adapter来实现数据显示,并演示如何添加删除功能。 首先,你需要在布局文件中定义一个ListView。在XML文件中,你可以使用`<ListView>`标签来创建ListView,并为...
为了实现这个功能,我们可以创建一个自定义的ListView,并重写`onMeasure()`方法。在这个方法中,我们可以计算出总的高度,并根据这个高度设置滚动条的比例。以下是一个简单的示例: ```java public class ...
1. 自定义Adapter:你需要继承BaseAdapter或者ArrayAdapter,并重写其中的方法,如getView(),在这个方法中你可以创建并设置ListView每一项的布局,包括按钮。 2. 设置按钮事件:在getView()方法中,找到Button组件...
5. **刷新ListView**: 当数据或视图状态改变时,需要调用Adapter的`notifyDataSetChanged()`方法通知ListView刷新。这将重新调用`getView()`方法,从而更新显示。 6. **优化性能**: 自定义ListView时,为了提高性能...
2. **自定义Adapter**: 创建自定义Adapter类,继承自BaseAdapter,实现以下方法: - `getCount()`: 返回数据源的大小。 - `getItem(int position)`: 获取指定位置的数据项。 - `getItemId(int position)`: 返回...
总之,这个DEMO提供了一个在ListView中使用单选按钮的示例,通过自定义Adapter实现单选逻辑,并确保在ListView滚动时保持选中状态的正确性。这对于理解和掌握Android中如何处理列表视图的交互和数据绑定是非常有价值...
总之,`ListView中的头尾按钮`是一个常见的Android开发场景,主要通过自定义Adapter和布局管理来实现。了解并熟练掌握这一技巧,将有助于提升应用的功能性和用户体验。同时,随着Android UI组件的不断发展,开发者也...
在ListView子项中添加CheckBox或Switch,可以实现多选功能,通常结合Adapter的`setChoiceMode()`方法使用。 4.3 分割线 可以通过设置ListView的`setDivider()`和`setDividerHeight()`方法来定制分割线的样式。 ...