主要还是在我之前的一片博客http://blog.csdn.net/xinqiqi123/article/details/6458030基础上进行完善,贴上主要代码,大部分和之前一篇差不多
public class lvButtonAdapter extends BaseAdapter {
private class ButtonViewHolder {
ImageView appIcon;
TextView appName;
ImageButton buttonClose;
int position;
}
private int mButtonClickPosition;
private ArrayList<HashMap<String, Object>> mAppList;
private LayoutInflater mInflater;
private Context mContext;
private String[] keyString;
private int[] valueViewID;
private ButtonViewHolder holder;
public lvButtonAdapter(Context c, ArrayList<HashMap<String, Object>> appList, int resource,
String[] from, int[] to) {
mAppList = appList;
mContext = c;
mInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
keyString = new String[from.length];
valueViewID = new int[to.length];
System.arraycopy(from, 0, keyString, 0, from.length);
System.arraycopy(to, 0, valueViewID, 0, to.length);
}
@Override
public int getCount() {
return mAppList.size();
}
@Override
public Object getItem(int position) {
return mAppList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void removeItem(int position){
mAppList.remove(position);
this.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView != null) {
holder = (buttonViewHolder) convertView.getTag();
} else {
convertView = mInflater.inflate(R.layout.lvitem, null);
holder = new buttonViewHolder();
holder.appIcon = (ImageView)convertView.findViewById(valueViewID[0]);
holder.appName = (TextView)convertView.findViewById(valueViewID[1]);
holder.buttonClose = (ImageButton)convertView.findViewById(valueViewID[2]);
convertView.setTag(holder);
}
holder.position = position;//获取每个item位置
HashMap<String, Object> appInfo = mAppList.get(position);
if (appInfo != null) {
String aname = (String) appInfo.get(keyString[1]);
int mid = (Integer)appInfo.get(keyString[0]);
int bid = (Integer)appInfo.get(keyString[2]);
holder.appName.setText(aname);
holder.appIcon.setImageDrawable(holder.appIcon.getResources().getDrawable(mid));
holder.buttonClose.setImageDrawable(holder.buttonClose.getResources().getDrawable(bid));
holder.buttonClose.setOnClickListener(new lvButtonListener(position));
}
return convertView;
}
public ButtonViewHolder getViewHolder(View v){
if (v.getTag() == null){
return getViewHolder((View) v.getParent());
}
return (buttonViewHolder ) v.getTag();
}//注意此方法的使用老外写的
class lvButtonListener implements OnClickListener {
private int position;
lvButtonListener(int pos) {
position = pos;
}
@Override
public void onClick(View v) {
int vid=v.getId();
if (vid == holder.buttonClose.getId()){
ButtonViewHolder holder = getViewHolder(v);
mButtonClickPosition = holder.position;//此处获得所点击button在list中的位置即:position
removeItem(position);
}
}
}
分享到:
相关推荐
标题"listView上增加button点击事件"所涉及的核心知识点是如何在ListView的item中嵌入Button,并同时处理这两个元素的独立点击事件,避免事件冲突。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来...
在Android开发中,ListView和Button是两个非常常用的组件。ListView用于展示大量的数据列表,而Button则作为用户交互的入口,通常用于触发特定的功能。本文将详细介绍如何在Android应用中将ListView与Button结合使用...
当我们需要在ListView的每一项中包含一个Button,并实现点击Button时改变Button自身的背景,这就涉及到自定义Adapter、事件监听以及对View状态的理解。 首先,我们需要创建一个自定义的Adapter,因为ListView默认的...
在这个场景中,我们要讨论的重点是如何在ListView中的每个Item(即列表项)上添加Button,并处理这些Button的点击事件,以便根据点击的Button获取对应的Item信息。 首先,理解ListView的工作原理至关重要。ListView...
3. **使用ItemClick和ItemLongClick事件**:如果Button的点击事件是作为ListView条目的一个特殊操作,可以考虑将它整合到ListView的ItemClickListener或ItemLongClickListener中。通过判断点击位置来确定是否执行...
本示例中,我们将探讨如何在ListView中嵌入Button,并处理Button的点击事件,同时确保ListView item自身的点击事件也被正确响应。此外,我们还将实现一种类似Digg网站的点击效果,即当用户点击item时,其视觉表现会...
在ListView中嵌入Button,可以创建丰富的交互式界面,例如QQ空间的说说评论和点赞功能。实现ListView中Button的点击事件,主要涉及到事件监听和数据绑定的概念。下面我们将详细探讨这两种常见的实现方式:接口回调和...
本篇将详细介绍如何在ListView中监听Button的点击事件,并提供两种实现方法。 ### 方法一:使用Adapter的getView()方法 1. **自定义Adapter**:首先,你需要创建一个继承自BaseAdapter的自定义Adapter,例如`...
动态加载ListView是指在用户触发特定事件(如点击Button)时,程序按需加载数据到ListView中,而不是一次性加载所有数据,这样可以提高应用的性能和用户体验。本文将详细讲解如何实现“点击button动态加载listView”...
本篇文章将详细讲解如何在Android的ListView中添加Button,并实现其点击事件。 首先,我们要创建一个自定义的列表项布局。这个布局文件通常会包含一个TextView显示数据,以及一个Button作为交互元素。例如,我们...
在`getView()`中,我们可以获取到每个ListView项中的Button,并为其设置点击事件监听器: ```java public class CustomAdapter extends ArrayAdapter<String> { public CustomAdapter(Context context, int ...
本教程将详细讲解如何在ListView中结合Button进行基本使用,以及如何实现ListView中的Button点击事件。 首先,我们需要在布局文件中创建ListView。在XML布局中,我们可以这样定义一个ListView: ```xml <ListView ...
总结起来,要实现“在ListView中添加Button并且自定义布局和获取输入框中值”,主要步骤包括: 1. 创建自定义布局文件,包含Button和EditText。 2. 创建自定义Adapter,重写`getView`方法,为每个列表项绑定数据并...
你也可以选择在Activity或Fragment中监听ListView的`.setOnItemClickListener()`,并通过Position获取点击的是哪个Button。 5. **性能优化**:对于性能优化,可以使用ViewHolder模式来避免频繁的 findViewById() ...
在某些场景下,我们可能需要在ListView的每个项中添加交互元素,如Button,甚至让Button具备开关功能,这样可以实现用户对列表中每一项的个性化操作。本文将详细讲解如何在ListView上给Button增加开关效果,并分享亲...
本教程将详细介绍如何在ListView中实现点击特定Item的Button时,动态地改变该Button的文字(Text)和背景颜色。 首先,我们需要创建一个自定义的ListView项布局(list_item.xml)。这个布局文件通常会包含一个...
// 在这里处理按钮点击事件,可以根据position获取对应的数据并进行操作 } } ``` 通过以上步骤,我们可以在Activity中响应ListView内部按钮的点击事件,实现更复杂的交互逻辑。这种方式使得Activity和Adapter之间...
为了增强用户体验和交互性,我们常常会在ListView的每一项(Item)中添加按钮。这样,用户可以通过点击按钮来执行特定的操作,如查看详情、删除条目等。本教程将详细介绍如何在ListView中添加按钮并实现监听事件。 ...
本文将深入探讨如何在ListView中添加图片和按钮,并实现它们以及ListView的双监听,以便按钮点击时能触发Activity的跳转。 首先,我们需要创建一个自定义的ListView适配器,通常会继承自BaseAdapter。在这个适配器...
解压后,可以通过查看Activity、Adapter和布局文件,了解如何将CheckBox、Button和item事件整合到带下拉刷新的ListView中。 总结,处理带下拉刷新的ListView中的CheckBox、Button和item事件涉及了ListView的基础...