`
lxcaoxin
  • 浏览: 127362 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

ListView 中添加按钮,动态删除添加ItemView的操作(转)

阅读更多
要实现添加按钮的操作,必须自定义Adapter,使用Button View的setTag()方法,将Button所属的位置设置到tag当中
要实现动态添加删除ItemView的操作,必须首先调整调整Adapter所绑定的数据源,然后调用Adapter的notifyDataSetChanged()方法

以下为实现的一个实例

package com.jason.joysmsyd;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SendMain extends ListActivity implements OnClickListener{

	Button buttonMessage,buttonContact,buttonHistory;
	EditText textMessage;
	
	List<Map<String,String>> contacts = new ArrayList<Map<String,String>>();
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		this.setContentView(R.layout.layout_send);
		
		buttonMessage = (Button) this.findViewById(R.id.ButtonMessage);
		buttonContact = (Button) this.findViewById(R.id.ButtonContact);
		buttonHistory = (Button) this.findViewById(R.id.ButtonHistory);
		
		textMessage = (EditText)this.findViewById(R.id.EditTextMessage);
		textMessage.setText(this.getIntent().getExtras().getString("message"));
	
	}

	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.ButtonMessage:
			this.finish();
			break;
		case R.id.ButtonContact:
		{
			Intent intent = new Intent();
			intent.setAction("com.jason.action.contact");
			this.startActivityForResult(intent, 0);
		}
			break;
		case R.id.ButtonHistory:
		{
			Intent intent = new Intent();
			intent.setAction("com.jason.action.history");
			this.startActivityForResult(intent, 1);
		}
			break;
		}
		
	}

	
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		 if (requestCode == 0 && resultCode == RESULT_OK) {
			this.getcontactFromString(data.getExtras().getString(
					UserSelectActivity.RETURN_LIST));
			bindDataToList();
		}
	}

	private void getcontactFromString(String data) {
		if (data == null || data.length() == 0) {
			return;
		}

		
		String[] arrayContact = data.split("#");
		for (String singleContact : arrayContact) {
			if (singleContact != null && singleContact.length() > 0) {
				String[] props = singleContact.split(":");
				if (props.length == 2) {
					Map<String,String> contact = new HashMap<String,String>();
					contact.put("name", props[0]);
					contact.put("phone", props[1]);
					contacts.add(contact);

				}
			}

		}
		
	}
	
	private void bindDataToList(){
		this.setListAdapter(new MyAdapter());
	}
	
	public class MyAdapter extends BaseAdapter{

		public int getCount() {
			// TODO Auto-generated method stub
			return contacts.size();
		}

		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return contacts.get(position);
		}

		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}


		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			LayoutInflater inflater = SendMain.this.getLayoutInflater();
			 final View view = inflater.inflate(R.layout.layout_user_item, null);
			 final TextView textPhone = (TextView) view.findViewById(R.id.text1);
			 final TextView textName = (TextView) view.findViewById(R.id.text2);
			 Button button = (Button)view.findViewById(R.id.buttonDelete);
			
			 textPhone.setText(contacts.get(position).get("phone"));
			 textName.setText(contacts.get(position).get("name"));
			 
			 button.setTag( position);
			 
			 button.setOnClickListener(new OnClickListener(){

				public void onClick(View v) {
					// TODO Auto-generated method stub
					int position = Integer.parseInt(v.getTag().toString());
					contacts.remove(position);
					MyAdapter.this.notifyDataSetChanged();
					
//					SendMain.this.getListView().refreshDrawableState();
				}});
			 
			 
			 
			
			return view;
		}
		
	}
}

转自:http://www.cnblogs.com/qzxia/archive/2010/11/29/1890959.html
分享到:
评论

相关推荐

    自定义listView添加滑动删除功能

    本篇将详细讲解如何为ListView添加滑动删除的功能。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来填充数据,每一项数据对应一个ListView的Item视图。当用户滑动Item时,我们可以监听滑动事件并...

    ListView添加左滑删除控件

    为了增强用户体验和功能,经常需要在ListView中添加一些交互元素,如左滑删除功能。本教程将详细介绍如何在ListView中实现左滑删除控件,并处理状态切换时的保持问题。 一、基本原理 左滑删除功能通常是通过监听...

    Android通过点击对应listview条目的删除按钮实现删除sqlite数据库对应行信息的简单方法

    总结起来,实现这个功能的关键步骤包括自定义ListView的Adapter,添加删除按钮并设置点击监听器,以及在数据库中执行删除操作。这种简单的方法使得在Android应用中实现ListView的删除功能变得直观且易于维护。当然,...

    自定义listView实现滑动显示删除按钮

    当滑动达到一定阈值时,设置删除按钮为可见,同时可能需要在Adapter中记录当前被滑动的条目,以便后续执行删除操作。 4. **事件处理**: 当用户点击了显示的删除按钮,我们可以在`OnClickListener`中调用Adapter的`...

    安卓ListView实现侧滑删除

    本教程将详细介绍如何在Android的ListView中实现侧滑删除。 首先,理解侧滑删除的实现原理。侧滑删除通常涉及两个主要步骤:监听滑动手势和显示/隐藏删除按钮。我们可以使用Android的GestureDetector和Scroller类来...

    listview 向左滑动删除

    为了实现滑动删除,我们通常会自定义ListView的Item布局,添加一个隐藏的删除按钮,并监听用户的滑动事件。 1. **自定义Item布局** 在XML布局文件中,我们可以创建一个包含主内容视图和隐藏的删除按钮的布局。例如...

    listview+checkbox实现简单批量删除

    在Android开发中,ListView是一种常用的组件,用于...在实际开发中,我们还需要考虑用户体验,比如添加删除确认对话框,避免用户误操作。同时,对于大量数据的删除,应确保在后台线程进行,以免阻塞主线程导致UI卡顿。

    ListView 实现带有Filpper效果的左右滑动删除 Item

    这种效果通常是通过左右滑动Item来触发,例如在邮件应用中,用户可以通过向左或向右滑动邮件来实现标记为已读或删除等操作。下面我们将详细讨论如何在ListView中实现这种Filpper效果,并删除Item。 首先,我们需要...

    ListView滑动删除

    滑动删除功能是提升用户体验的一个重要特性,尤其在处理长列表时,用户可以通过简单的手势操作来删除列表中的条目,使得交互更加直观和便捷。本实例将详细介绍如何在ListView中实现滑动删除功能。 首先,要实现滑动...

    Android ListView CheckBox

    最后,当用户点击“删除”按钮时,我们需要遍历已选中的列表项,根据其在数据列表中的位置来删除对应的数据,并更新ListView。为了防止在遍历过程中修改集合,我们可以先复制一份已选中的索引列表,然后进行删除操作...

    android手动添加删除子控件,并获取控件信息

    在Android开发中,动态地添加和删除视图(View)是一项常见的需求,特别是在构建具有可交互用户界面的应用中。例如,一个列表项可能需要包含一个删除按钮,以便用户能够直观地进行操作。以下是对这个主题的详细解释...

    Android-RecyclerView实现Item添加和删除

    RecyclerView提供了一种更加高效、灵活的方式来管理大量数据的显示,尤其是在处理动态数据变化时,如添加和删除Item操作。本教程将详细讲解如何在Android应用中使用RecyclerView实现Item的添加和删除功能。 首先,...

    android仿qq、微信左滑删除listview(不使用外部插件完成)

    在Android开发中,为了提供类似QQ和微信的用户体验,我们经常需要实现一个功能:当用户在ListView中左滑时,显示一个包含删除按钮的视图。这个功能可以在不依赖任何外部插件的情况下实现,主要涉及Android自定义View...

    Android ListView长按弹出CheckBox批量删除功能

    为了增强用户体验和功能,我们经常需要在ListView上实现一些自定义操作,比如长按弹出CheckBox以实现批量删除功能。本教程将详细讲解如何在Android中实现这个功能,以模仿某些流行的播放器应用。 首先,我们需要...

    Android仿QQ列表滑动删除操作

    最后,别忘了在Adapter中处理删除操作,更新数据集并调用`notifyDataSetChanged()`通知ListView数据已更改。你可能还需要处理UI反馈,例如显示删除确认对话框或直接删除而不提示。 总的来说,实现Android仿QQ列表...

    android listview的item侧滑的实现

    为了增强用户体验,有时候我们需要在ListView的每个Item上实现侧滑效果,这通常用于实现删除、标记或其他操作。本教程将详细介绍如何在Android Studio中实现ListView的Item侧滑功能。 首先,我们需要创建一个自定义...

    ListViewSilding

    ListViewSilding通常指的是为ListView添加滑动手势,比如侧滑删除、上下滑动刷新等交互效果。这种功能能够提升用户体验,使用户在操作列表时更加便捷。 首先,我们要了解ListView的基本结构。ListView是由多个View...

    Android中RecyclerView的长按删除

    本教程将详细讲解如何在RecyclerView中实现长按删除功能,同时展示瀑布流布局,并在点击item时跳转到新的界面。 首先,我们需要在Android Studio中创建一个新的项目,并添加RecyclerView依赖项到build.gradle文件中...

    文章列表的左滑删除实现

    5. **事件回调**:在Adapter中,我们需要添加一个接口来处理删除操作的回调,这样父组件(如Activity或Fragment)可以知道何时需要执行真正的删除操作,例如从数据库或网络中删除数据。 ```java public interface ...

    RecyclerView刷新,左拉删除

    在RecyclerView的ItemView中,我们可以监听滑动手势,并在回调中执行删除操作。 以下是一个简单的实现步骤: 1. 创建一个自定义的RecyclerView.ItemDecoration,用于绘制滑动指示器。 2. 在ViewHolder中,添加滑动...

Global site tag (gtag.js) - Google Analytics