要实现添加按钮的操作,必须自定义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通过Adapter来填充数据,每一项数据对应一个ListView的Item视图。当用户滑动Item时,我们可以监听滑动事件并...
为了增强用户体验和功能,经常需要在ListView中添加一些交互元素,如左滑删除功能。本教程将详细介绍如何在ListView中实现左滑删除控件,并处理状态切换时的保持问题。 一、基本原理 左滑删除功能通常是通过监听...
总结起来,实现这个功能的关键步骤包括自定义ListView的Adapter,添加删除按钮并设置点击监听器,以及在数据库中执行删除操作。这种简单的方法使得在Android应用中实现ListView的删除功能变得直观且易于维护。当然,...
当滑动达到一定阈值时,设置删除按钮为可见,同时可能需要在Adapter中记录当前被滑动的条目,以便后续执行删除操作。 4. **事件处理**: 当用户点击了显示的删除按钮,我们可以在`OnClickListener`中调用Adapter的`...
本教程将详细介绍如何在Android的ListView中实现侧滑删除。 首先,理解侧滑删除的实现原理。侧滑删除通常涉及两个主要步骤:监听滑动手势和显示/隐藏删除按钮。我们可以使用Android的GestureDetector和Scroller类来...
为了实现滑动删除,我们通常会自定义ListView的Item布局,添加一个隐藏的删除按钮,并监听用户的滑动事件。 1. **自定义Item布局** 在XML布局文件中,我们可以创建一个包含主内容视图和隐藏的删除按钮的布局。例如...
在Android开发中,ListView是一种常用的组件,用于...在实际开发中,我们还需要考虑用户体验,比如添加删除确认对话框,避免用户误操作。同时,对于大量数据的删除,应确保在后台线程进行,以免阻塞主线程导致UI卡顿。
这种效果通常是通过左右滑动Item来触发,例如在邮件应用中,用户可以通过向左或向右滑动邮件来实现标记为已读或删除等操作。下面我们将详细讨论如何在ListView中实现这种Filpper效果,并删除Item。 首先,我们需要...
滑动删除功能是提升用户体验的一个重要特性,尤其在处理长列表时,用户可以通过简单的手势操作来删除列表中的条目,使得交互更加直观和便捷。本实例将详细介绍如何在ListView中实现滑动删除功能。 首先,要实现滑动...
最后,当用户点击“删除”按钮时,我们需要遍历已选中的列表项,根据其在数据列表中的位置来删除对应的数据,并更新ListView。为了防止在遍历过程中修改集合,我们可以先复制一份已选中的索引列表,然后进行删除操作...
在Android开发中,动态地添加和删除视图(View)是一项常见的需求,特别是在构建具有可交互用户界面的应用中。例如,一个列表项可能需要包含一个删除按钮,以便用户能够直观地进行操作。以下是对这个主题的详细解释...
RecyclerView提供了一种更加高效、灵活的方式来管理大量数据的显示,尤其是在处理动态数据变化时,如添加和删除Item操作。本教程将详细讲解如何在Android应用中使用RecyclerView实现Item的添加和删除功能。 首先,...
在Android开发中,为了提供类似QQ和微信的用户体验,我们经常需要实现一个功能:当用户在ListView中左滑时,显示一个包含删除按钮的视图。这个功能可以在不依赖任何外部插件的情况下实现,主要涉及Android自定义View...
为了增强用户体验和功能,我们经常需要在ListView上实现一些自定义操作,比如长按弹出CheckBox以实现批量删除功能。本教程将详细讲解如何在Android中实现这个功能,以模仿某些流行的播放器应用。 首先,我们需要...
最后,别忘了在Adapter中处理删除操作,更新数据集并调用`notifyDataSetChanged()`通知ListView数据已更改。你可能还需要处理UI反馈,例如显示删除确认对话框或直接删除而不提示。 总的来说,实现Android仿QQ列表...
为了增强用户体验,有时候我们需要在ListView的每个Item上实现侧滑效果,这通常用于实现删除、标记或其他操作。本教程将详细介绍如何在Android Studio中实现ListView的Item侧滑功能。 首先,我们需要创建一个自定义...
ListViewSilding通常指的是为ListView添加滑动手势,比如侧滑删除、上下滑动刷新等交互效果。这种功能能够提升用户体验,使用户在操作列表时更加便捷。 首先,我们要了解ListView的基本结构。ListView是由多个View...
本教程将详细讲解如何在RecyclerView中实现长按删除功能,同时展示瀑布流布局,并在点击item时跳转到新的界面。 首先,我们需要在Android Studio中创建一个新的项目,并添加RecyclerView依赖项到build.gradle文件中...
5. **事件回调**:在Adapter中,我们需要添加一个接口来处理删除操作的回调,这样父组件(如Activity或Fragment)可以知道何时需要执行真正的删除操作,例如从数据库或网络中删除数据。 ```java public interface ...
在RecyclerView的ItemView中,我们可以监听滑动手势,并在回调中执行删除操作。 以下是一个简单的实现步骤: 1. 创建一个自定义的RecyclerView.ItemDecoration,用于绘制滑动指示器。 2. 在ViewHolder中,添加滑动...