`

带删除按钮的ListView

阅读更多
不用说了,上图先:

import java.util.ArrayList;
import com.ql.adapter.DeletableAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class Test_4_Activity extends Activity {
	private DeletableAdapter adapter;
	private ArrayList<String> text;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test4);

		ListView list_view = (ListView) findViewById(R.id.list_view);

		text = new ArrayList<String>();
		text.add("111");
		text.add("222");
		text.add("333");
		text.add("444");
		// 初始化数据结束
		adapter = new DeletableAdapter(this, text);
		list_view.setAdapter(adapter);
		// list_view.setSelector(R.drawable.list_select_color);

		Button button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				text.add("10000");
				adapter.notifyDataSetChanged();
			}
		});

	}

}


import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.ql.activity.R;

public class DeletableAdapter extends BaseAdapter{
	private Context context;
	private ArrayList<String> text;
	public DeletableAdapter(Context context,ArrayList<String> text){
		this.context = context;
		this.text=text;
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return text.size();
	}
	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return text.get(position);
	}
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		final int index=position;
		View view=convertView;
		if(view==null){
			LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			view=inflater.inflate(R.layout.row_simple_list_item_2, null);
		}
		final TextView textView=(TextView)view.findViewById(R.id.simple_item_1);
		textView.setText(text.get(position));
		final ImageView imageView=(ImageView)view.findViewById(R.id.simple_item_2);
		imageView.setBackgroundResource(android.R.drawable.ic_delete);
		imageView.setTag(position);
		imageView.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				text.remove(index);
				notifyDataSetChanged();
				Toast.makeText(context, textView.getText().toString(), Toast.LENGTH_SHORT).show();
			}
		});
		return view;
	}
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
	    <ImageView android:id="@+id/simple_item_2"
	    android:layout_width="wrap_content"
	    android:layout_height="fill_parent" 
	    android:layout_alignParentRight="true"
	    android:focusable="false"
	    />
  		<TextView android:id="@+id/simple_item_1"
	    android:layout_width="fill_parent" 
	    android:layout_height="fill_parent" 
	    android:layout_alignParentLeft="true"
	    />
</RelativeLayout>


这里要实现点击ListView里面的一个控件而不是选中一行。
最好重写Adapter,而不要使用其自带的SimpleAdapter,否则该子控件的事件就不那么好处理了!
  • 大小: 10.5 KB
分享到:
评论
4 楼 qianguming 2013-12-20  
如何在删除的时候提醒呢
3 楼 280541736 2012-04-26  
这种问题也太普遍了吧,用hanlder实现主UI线程的更新,不能在其他线程中对主UI线程更新。
2 楼 gundumw100 2011-11-19  
bigboy 写道
兄台 你这样的做法测试过么 ?
至少这个
public void onClick(View v) { 
55.                // TODO Auto-generated method stub 
56.                text.remove(index); 
57.                notifyDataSetChanged(); 
58.                Toast.makeText(context, textView.getText().toString(), Toast.LENGTH_SHORT).show(); 
59.            } 

就会报错 !
Only the original thread that created a view hierarchy can touch its views.

一定哪里搞错了,我从项目里抠出来的代码,这个问题应该好解决,你自己试着解决下。
1 楼 bigboy 2011-11-19  
兄台 你这样的做法测试过么 ?
至少这个
public void onClick(View v) { 
55.                // TODO Auto-generated method stub 
56.                text.remove(index); 
57.                notifyDataSetChanged(); 
58.                Toast.makeText(context, textView.getText().toString(), Toast.LENGTH_SHORT).show(); 
59.            } 

就会报错 !
Only the original thread that created a view hierarchy can touch its views.

相关推荐

    ListView像左滑动Item显示删除按钮

    本篇文章将详细讲解如何实现ListView中Item的左滑动显示删除按钮。 首先,我们需要一个自定义的ListView,这通常通过继承ListView类并重写其onTouchEvent()方法来实现。在这个方法中,我们可以监听用户的滑动操作。...

    左滑出现删除按钮,点击按钮删除ListView的item条目

    总的来说,实现“左滑显示删除按钮,点击按钮删除ListView的item条目”的功能,涉及到Android手势识别、自定义布局、动画处理、数据操作等多个方面。开发者需要熟练掌握Android SDK,理解ListView的工作原理,以及...

    带按钮listview,添加监听

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

    ListView滑动显示删除按钮经行删除

    滑动删除的核心在于监听ListView的滚动事件,当用户滑动某一行时,显示该行的删除按钮,滑动结束或离开该行时隐藏按钮。这一过程通常通过自定义适配器(Adapter)和滑动监听器(SwipeListener)来实现。 二、实现...

    ListView的item水平滑动(类QQ的左滑显示删除按钮)

    标题提到的"ListView的item水平滑动(类QQ的左滑显示删除按钮)"就是这样一个功能,它允许用户通过水平滑动ListView的每一项来触发额外的操作,例如显示删除按钮。 实现这个功能的核心在于自定义一个Adapter,这是...

    安卓 带左滑出现删除按钮的ListView

    `带左滑出现删除按钮的ListView` 是一种常见的交互设计,用户可以通过向左滑动列表项来显示一个或多个操作按钮,比如“删除”按钮,提高用户体验。下面将详细解释如何实现这个功能。 首先,我们需要了解ListView的...

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

    首先,我们需要在ListView的每个条目上添加一个删除按钮。这可以通过自定义ListView的Adapter来完成。在Adapter的getView()方法中,为每一项创建一个包含删除按钮的视图布局,并设置一个点击监听器。例如,你可以...

    ListView - 侧滑出现删除等按钮

    在很多应用中,为了提供更丰富的用户体验,开发者会为ListView添加一些交互性更强的功能,比如侧滑出现删除按钮。这个功能可以让用户轻松地对列表中的条目进行操作,比如删除、标记等,而无需进入详情页或执行其他...

    ListView 仿QQ微信侧滑出现删除按钮

    "ListView 仿QQ微信侧滑出现删除按钮"这个主题涉及到的是如何实现一个类似QQ和微信聊天界面中,通过侧滑列表项来显示删除或其他操作的功能。这种交互设计不仅提高了用户体验,也使得操作更加直观。下面将详细讲解...

    安卓ListView实现侧滑删除

    我们可以使用Android的GestureDetector和Scroller类来处理滑动手势,然后通过改变View的布局参数来显示或隐藏删除按钮。 1. 创建自定义ListView项布局: 创建一个包含主内容和隐藏删除按钮的布局文件,例如`list_...

    模拟微信listview左滑出现删除按钮

    在Android开发中,模拟微信Listview左滑出现删除按钮是一种常见的交互设计,它增强了用户界面的易用性和可操作性。这个功能的核心是利用SwipeRefreshLayout和ListView或RecyclerView结合实现的,接下来我们将深入...

    【android开发】仿QQ中ListView中选项左滑出现删除按钮

    点击删除按钮后,需要执行相应的操作,例如删除数据源中的对应项,并更新ListView。为了防止在滑动过程中误触,通常会在用户停止滑动后才激活删除按钮。 5. **状态保存与恢复**: 在ListView滚动时,需要确保滑动...

    Android ListView 仿微信侧滑删除

    "Android ListView 仿微信侧滑删除"这个主题涉及到如何实现类似微信中常见的侧滑菜单功能,即用户在ListView的每一项上向左滑动时,会显示出一个包含删除按钮的视图,允许用户快速删除列表中的某一项。下面我们将...

    ListView左滑弹出删除按钮完美版

    标题提到的"ListView左滑弹出删除按钮完美版"正是针对这个需求进行的优化,旨在解决在滑动过程中可能出现的显示异常问题。 在标准的ListView中,为了实现左滑删除效果,通常需要自定义Adapter并扩展AbsListView的...

    ListView添加左滑删除控件

    3. **动态改变视图**:当检测到左滑手势时,通过改变列表项的布局参数或者使用TranslationX属性,让删除按钮或提示逐渐显现。可以使用Animation或者ObjectAnimator来实现平滑的动画效果。 4. **事件处理**:为显示...

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

    1. **自定义View**: 首先,我们需要创建一个自定义的ListView条目布局,这个布局包含了一个可隐藏的删除按钮。通常使用XML来定义布局,包含一个TextView用于显示数据,以及一个ImageView作为删除按钮,初始设置为不...

    listview侧滑出现删除按钮,仿ios侧滑删除

    本项目"listview侧滑出现删除按钮,仿ios侧滑删除"就是针对这种需求设计的,它允许用户通过在ListView的每一项上侧滑来显示删除按钮,从而实现快速删除功能,而无需更改原有的框架或Adapter,这对于已有的老项目来说...

    WPF中listview显示列表的删除和显示

    首先,为ListView添加删除按钮,可以创建一个模板列并在其中放置Button控件: ```xml ``` 这里,`DeleteCommand`是一个依赖属性或ViewModel中的命令,当点击按钮时执行删除操作: ```csharp public ...

    可滑动删除的listview的demo

    Swipemenulistview库提供了便捷的方法来添加滑动手势,并且可以自定义滑动时显示的删除按钮或者其他操作指示。 实现滑动删除的基本步骤包括: 1. **集成库**: 首先,你需要在项目中引入Swipemenulistview库。这...

    listview 左滑弹出删除按钮,需要折腾一下

    标题"listview 左滑弹出删除按钮,需要折腾一下"表明我们要实现一个功能,即当用户向左滑动ListView中的条目时,会显示一个删除按钮,用户点击后可以删除该条目。这个功能在许多应用中很常见,比如邮件应用中的邮件...

Global site tag (gtag.js) - Google Analytics