领导看到iphone上tableview有个滑动删除的效果,要求在android上也实现,搜了下资料,实现起来比较简单,可弄到后面,居然不能点击了,把一篇文章中的代码修改了一下,捣鼓了一番,搞定,下面是代码:

 package com.example.listsildedel;

 import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListView; public class MainActivity extends Activity { private ListView mListView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) this.findViewById(R.id.list);
List<String> list = new ArrayList<String>();
for(int i=0;i<10;i++){
list.add("选项"+i);
}
//实例化自定义内容适配类
MyAdapter adapter = new MyAdapter(this, this,list);
//为listView设置适配
mListView.setAdapter(adapter);
} public void openActivity(){
Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);
} }

adapter:

 package com.example.listsildedel;

 import java.util.List;

 import android.content.Context;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView; public class MyAdapter extends BaseAdapter { private List<String> arrays = null;
private Context mContext;
private Button curDel_btn;
private float x,ux;
private MainActivity mActivity; public MyAdapter(MainActivity activity, Context mContext, List<String> arrays) {
this.mContext = mContext;
this.arrays = arrays;
mActivity = activity; } public int getCount() {
return this.arrays.size();
} public Object getItem(int position) {
return null;
} public long getItemId(int position) {
return position;
} public View getView(final int position, View view, ViewGroup arg2) {
ViewHolder viewHolder = null;
if (view == null) {
viewHolder = new ViewHolder();
view = LayoutInflater.from(mContext).inflate(R.layout.item, null);
viewHolder.tvTitle = (TextView) view.findViewById(R.id.title);
viewHolder.btnDel = (Button) view.findViewById(R.id.del);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
//换掉了原来listview中的onItemClick
<span style="font-size:18px;"><strong>view.setOnClickListener(new OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
mActivity.openActivity();
}
});</strong></span> //为每一个view项设置触控监听
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) { final ViewHolder holder = (ViewHolder) v.getTag(); //当按下时处理
if (event.getAction() == MotionEvent.ACTION_DOWN) { // //设置背景为选中状态
// v.setBackgroundResource(R.drawable.mm_listitem_pressed);
//获取按下时的x轴坐标
x = event.getX();
//判断之前是否出现了删除按钮如果存在就隐藏
if (curDel_btn != null) {
if(curDel_btn.getVisibility() == View.VISIBLE){
curDel_btn.setVisibility(View.GONE);
return true;
}
} } else if (event.getAction() == MotionEvent.ACTION_UP) {// 松开处理 //设置背景为未选中正常状态
//v.setBackgroundResource(R.drawable.mm_listitem_simple);
//获取松开时的x坐标
ux = event.getX(); //判断当前项中按钮控件不为空时
if (holder.btnDel != null) { //按下和松开绝对值差当大于20时显示删除按钮,否则不显示 if (Math.abs(x - ux) > 20) {
holder.btnDel.setVisibility(View.VISIBLE);
curDel_btn = holder.btnDel;
return true;
}
}
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {//当滑动时背景为选中状态
return true;
//v.setBackgroundResource(R.drawable.mm_listitem_pressed); } else {//其他模式
//设置背景为未选中正常状态
//v.setBackgroundResource(R.drawable.mm_listitem_simple); } return false;
}
});
viewHolder.tvTitle.setText(this.arrays.get(position)); //为删除按钮添加监听事件,实现点击删除按钮时删除该项
viewHolder.btnDel.setOnClickListener(new OnClickListener() { public void onClick(View v) {
if(curDel_btn!=null)
curDel_btn.setVisibility(View.GONE);
arrays.remove(position);
notifyDataSetChanged(); }
});
return view; } final static class ViewHolder {
TextView tvTitle;
Button btnDel;
}
}

      

代码下载: http://download.csdn.net/detail/wulingbo2005/6691885

转载请注明出处

android中listview的item滑动删除效果(已解决listview点击问题)的更多相关文章

  1. Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突

    用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...

  2. 【转】Android 实现ListView的滑动删除效果

    http://www.cnblogs.com/weixiao870428/p/3524055.html http://download.csdn.net/download/love_javc_you/ ...

  3. Android 高级UI设计笔记03:使用ListView实现左右滑动删除Item

    1. 这里就是实现一个很简单的功能,使用ListView实现左右滑动删除Item: (1)当我们在ListView的某个Item,向左滑动显示一个删除按钮,用户点击按钮,即可以删除该项item,并且有 ...

  4. 微信小程序实现滑动删除效果

    在一些app中,随处可见左滑动的效果,在微信小程序中,官方并未提供相关组件,需要我们自己动手写一个类似的效果 下面仅列举出核心代码,具体的优化需要根据你自身的需求 <view class='li ...

  5. 原生H5页面模拟APP左侧滑动删除效果

    话不多说,往左侧滑动,显示删除,我们先来看一下效果图:如下: 这个布局我就不多说,反正就是一行ul,li, class名“item” js代码如下: $(".item").on(& ...

  6. ListView的item中有button和checkbox,listview的点击事件无效

    ListView的item中有button和checkbox,listview的点击事件无效,解决办法: 在item布局文件中的根控件中添加属性设置: android:descendantFocusa ...

  7. spirng中的asm与jdk不兼容<已解决>

    转载自:spirng中的asm与jdk不兼容<已解决> 前言 不知道前面对eclipse做了什么,使用maven来创建项目,然后转成web,启动的时候一直报错.我弄了好久,还是无法解决,先 ...

  8. Windows平台下在Emacs中使用plantuml中文乱码问题(已解决)

    Windows平台下在Emacs中使用plantuml中文乱码问题(已解决) */--> code {color: #FF0000} pre.src {background-color: #00 ...

  9. ListView滑动删除效果实现

    通过继承ListView然后结合PopupWindow实现 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0" ...

随机推荐

  1. IOS Label 自动换行 IOS6和IOS7

    IOS 6和ios7 不一样,所以,我们分开来: IOS6: //计算实际frame大小,并将label的frame变成实际大小     CGSize size01 = [ssizeWithFont: ...

  2. [置顶] Ubuntu 12.04中文输入法的安装

    Ubuntu 12.04中文输入法的安装 Ubuntu上的输入法主要有小小输入平台(支持拼音/二笔/五笔等),Fcitx,Ibus,Scim等.其中Scim和Ibus是输入法框架. 在Ubuntu的中 ...

  3. Mysql性能优化之缓存参数优化

    数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优化 ...

  4. careercup-树与图 4.8

    4.8 你有两棵非常大的二叉树:T1,有几百万个结点:T2,有几百个结点.设计一个算法,判断T2是否为T1的子树. 如果T1有这么一个结点n,其子树与T2一模一样,则T2C++实现代码: #inclu ...

  5. ThinkPHP函数详解:L方法

    L方法用于启用多语言的情况下,设置和获取当前的语言定义.调用格式:L('语言变量'[,'语言值'])设置语言变量除了使用语言包定义语言变量之外,我们可以用L方法动态设置语言变量,例如: L('LANG ...

  6. ActionBar功能,效果图一览

    这里提供了效果预览,如果由你需要的界面,详细的代码可以去看原文. http://blog.csdn.net/android2me/article/details/8874846 一.概述 1.App ...

  7. swift-08-使用键值对儿统计字符在字符串中出现的次数

    // //  main.swift //  12- // //  Created by wanghy on 15/8/9. //  Copyright (c) 2015年 wanghy. All ri ...

  8. 使用RequireJS优化Web应用前端

    require.js官网:http://requirejs.org/docs/download.html 一篇不错的文章:http://www.csdn.net/article/2012-09-27/ ...

  9. mysql笔记之主从切换

    一. 正常切换 1)从服务器检查SHOW PROCESSLIST语句的输出,直到你看到Has read all relaylogwaiting for the slave I/O thread to ...

  10. myeclipse、eclipse去掉无用的workSpace

    在 eclipse\configuration\.settings\org.eclipse.ui.ide.prefs 文件里面有下面这段,我们可以从 RECENT_WORKSPACES 里面看到它列出 ...