`
20386053
  • 浏览: 461957 次
文章分类
社区版块
存档分类
最新评论

ListView和Button混合后,获取所点击button在ListView中的position

 
阅读更多

主要还是在我之前的一片博客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上增加button点击事件"所涉及的核心知识点是如何在ListView的item中嵌入Button,并同时处理这两个元素的独立点击事件,避免事件冲突。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来...

    ListView和Button的结合使用

    在Android开发中,ListView和Button是两个非常常用的组件。ListView用于展示大量的数据列表,而Button则作为用户交互的入口,通常用于触发特定的功能。本文将详细介绍如何在Android应用中将ListView与Button结合使用...

    ListView的Button点击更改Button本身背景

    当我们需要在ListView的每一项中包含一个Button,并实现点击Button时改变Button自身的背景,这就涉及到自定义Adapter、事件监听以及对View状态的理解。 首先,我们需要创建一个自定义的Adapter,因为ListView默认的...

    ListView和BaseAdapter搭配Button点击事件获取不同Item

    在这个场景中,我们要讨论的重点是如何在ListView中的每个Item(即列表项)上添加Button,并处理这些Button的点击事件,以便根据点击的Button获取对应的Item信息。 首先,理解ListView的工作原理至关重要。ListView...

    ListView和Button点击事件冲突处理

    3. **使用ItemClick和ItemLongClick事件**:如果Button的点击事件是作为ListView条目的一个特殊操作,可以考虑将它整合到ListView的ItemClickListener或ItemLongClickListener中。通过判断点击位置来确定是否执行...

    ListView中嵌入Button ,ListView的item与Button的click事件分别被响应,同时还实现了类似Digg的item点击效果

    本示例中,我们将探讨如何在ListView中嵌入Button,并处理Button的点击事件,同时确保ListView item自身的点击事件也被正确响应。此外,我们还将实现一种类似Digg网站的点击效果,即当用户点击item时,其视觉表现会...

    Listview中的Button实现点击事件

    在ListView中嵌入Button,可以创建丰富的交互式界面,例如QQ空间的说说评论和点赞功能。实现ListView中Button的点击事件,主要涉及到事件监听和数据绑定的概念。下面我们将详细探讨这两种常见的实现方式:接口回调和...

    实现listview监听button

    本篇将详细介绍如何在ListView中监听Button的点击事件,并提供两种实现方法。 ### 方法一:使用Adapter的getView()方法 1. **自定义Adapter**:首先,你需要创建一个继承自BaseAdapter的自定义Adapter,例如`...

    点击button动态加载listView

    动态加载ListView是指在用户触发特定事件(如点击Button)时,程序按需加载数据到ListView中,而不是一次性加载所有数据,这样可以提高应用的性能和用户体验。本文将详细讲解如何实现“点击button动态加载listView”...

    Android ListView添加Button及其事件

    本篇文章将详细讲解如何在Android的ListView中添加Button,并实现其点击事件。 首先,我们要创建一个自定义的列表项布局。这个布局文件通常会包含一个TextView显示数据,以及一个Button作为交互元素。例如,我们...

    ListView中添加Button点击事件并改变状态

    在`getView()`中,我们可以获取到每个ListView项中的Button,并为其设置点击事件监听器: ```java public class CustomAdapter extends ArrayAdapter&lt;String&gt; { public CustomAdapter(Context context, int ...

    ListView的基本使用带Button

    本教程将详细讲解如何在ListView中结合Button进行基本使用,以及如何实现ListView中的Button点击事件。 首先,我们需要在布局文件中创建ListView。在XML布局中,我们可以这样定义一个ListView: ```xml &lt;ListView ...

    在ListView中添加Button并且自定义布局和获取输入框中值的方法

    总结起来,要实现“在ListView中添加Button并且自定义布局和获取输入框中值”,主要步骤包括: 1. 创建自定义布局文件,包含Button和EditText。 2. 创建自定义Adapter,重写`getView`方法,为每个列表项绑定数据并...

    带button的listview

    你也可以选择在Activity或Fragment中监听ListView的`.setOnItemClickListener()`,并通过Position获取点击的是哪个Button。 5. **性能优化**:对于性能优化,可以使用ViewHolder模式来避免频繁的 findViewById() ...

    ListView上给Button增加开关

    在某些场景下,我们可能需要在ListView的每个项中添加交互元素,如Button,甚至让Button具备开关功能,这样可以实现用户对列表中每一项的个性化操作。本文将详细讲解如何在ListView上给Button增加开关效果,并分享亲...

    ListView中点击对应item的Button时改变其文字和图片

    本教程将详细介绍如何在ListView中实现点击特定Item的Button时,动态地改变该Button的文字(Text)和背景颜色。 首先,我们需要创建一个自定义的ListView项布局(list_item.xml)。这个布局文件通常会包含一个...

    在Activity中响应ListView内部按钮的点击事件

    // 在这里处理按钮点击事件,可以根据position获取对应的数据并进行操作 } } ``` 通过以上步骤,我们可以在Activity中响应ListView内部按钮的点击事件,实现更复杂的交互逻辑。这种方式使得Activity和Adapter之间...

    带按钮listview,添加监听

    为了增强用户体验和交互性,我们常常会在ListView的每一项(Item)中添加按钮。这样,用户可以通过点击按钮来执行特定的操作,如查看详情、删除条目等。本教程将详细介绍如何在ListView中添加按钮并实现监听事件。 ...

    listview添加图片按钮 及按钮跟ListView双监听

    本文将深入探讨如何在ListView中添加图片和按钮,并实现它们以及ListView的双监听,以便按钮点击时能触发Activity的跳转。 首先,我们需要创建一个自定义的ListView适配器,通常会继承自BaseAdapter。在这个适配器...

    带下拉刷新的ListView的中同时处理CheckBox,Button,和item事件

    解压后,可以通过查看Activity、Adapter和布局文件,了解如何将CheckBox、Button和item事件整合到带下拉刷新的ListView中。 总结,处理带下拉刷新的ListView中的CheckBox、Button和item事件涉及了ListView的基础...

Global site tag (gtag.js) - Google Analytics