`

Android – ListView 中添加按钮,动态删除添加ItemView的操作

 
阅读更多

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

以下为实现的一个实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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

转载编辑: lancelot7
转载地址:http://disanji.net/2010/12/22/android-listview-itemview/
分享到:
评论

相关推荐

    android修改listview列表的item中某个控件的值demo

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在这个特定的示例中,我们探讨的是如何在不调用Adapter的`notifyDataSetChanged()`方法的情况下,直接修改ListView列表项中某个具体控件(如...

    listView上增加button点击事件

    然而,在实际应用中,我们经常需要在ListView的每一项(item)中添加按钮(button),以便用户进行交互操作。标题"listView上增加button点击事件"所涉及的核心知识点是如何在ListView的item中嵌入Button,并同时处理...

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

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

    ListView添加左滑删除控件

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

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

    在ListView的Item布局文件中,我们可以添加一个可滑动的视图,如ImageView或TextView,表示删除按钮。初始时,这个视图可以是隐藏的。例如: ```xml &lt;LinearLayout xmlns:android=...

    Android 系统自带单选按钮的listView

    在本教程中,我们将探讨如何在Android系统中利用ListView结合单选按钮(RadioButton)来实现一个功能性的选择列表,以及如何设置默认选中项。 首先,我们需要了解ListView的基本用法。ListView是Android SDK中的一...

    安卓ListView实现侧滑删除

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

    android 带有按钮相应的listview

    总结起来,"android 带有按钮相应的listview"是Android开发中一种增强用户交互的方式,它结合了ListView的展示功能和Button的触发事件能力。通过自定义布局、适配器和事件监听,我们可以创建出具有动态响应的列表,...

    可以手动对listview添加item数据行

    手动向ListView添加item数据行是一项常见的操作,尤其在动态加载数据或者用户交互时。在这个过程中,我们需要结合Adapter来实现这一功能,因为Adapter是连接ListView和数据源的关键。本篇文章将详细讲解如何在...

    android ListView子控件监听

    在Android开发中,ListView是常用的一种视图组件,它能够展示大量的数据并支持滚动操作。在实际应用中,我们经常需要对ListView中的每个子项(Item)进行交互处理,例如点击事件、长按事件等。这就涉及到如何监听...

    Android ListView CheckBox

    本篇文章将详细探讨如何在Android中实现一个具有多选、反选、删除和全选功能的ListView,结合CheckBox的使用。 首先,我们需要创建一个自定义的ListView项布局,包含一个TextView用于显示数据,以及一个CheckBox...

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

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

    Android-RecyclerView实现Item添加和删除

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

    android 弹出框 内添加listview

    在Android开发中,创建一个带有ListView的弹出框可以为用户提供一种交互式的界面,用于显示大量数据或选项。本文将详细介绍如何实现这个功能。 首先,我们需要了解弹出框(Dialog)的基本概念。在Android中,Dialog...

    listViewItems(控制按钮显示状态)

    这个主题"listViewItems(控制按钮显示状态)"就是关于如何在ListView的每个Item中动态地控制按钮的可见性,以提高用户体验和交互性。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来连接数据源和视图...

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

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了增强用户体验和功能,我们经常需要在ListView上实现一些自定义操作,比如长按弹出CheckBox以实现批量删除功能。本教程将详细讲解如何在...

    listview 向左滑动删除

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

    android listview简单实现点赞动画效果

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在社交应用或者社区类应用中,点赞功能是非常常见的交互元素。本篇文章将详细介绍如何在ListView中实现一个简单的点赞动画效果,而无需每次...

    android自定义dialog嵌套listview

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者创建具有特定布局和功能的对话框,以提供更丰富的用户体验。本篇文章将深入探讨如何在Android中实现一个自定义Dialog并嵌套ListView,同时实现点击事件...

    android listview的item侧滑的实现

    在Android开发中,ListView是常用的数据展示组件,用于显示大量数据列表。为了增强用户体验,有时候我们需要在ListView的每个Item上实现侧滑效果,这通常用于实现删除、标记或其他操作。本教程将详细介绍如何在...

Global site tag (gtag.js) - Google Analytics