android中listview的item滑动删除效果(已解决listview点击问题)
领导看到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点击问题)的更多相关文章
- Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突
用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...
- 【转】Android 实现ListView的滑动删除效果
http://www.cnblogs.com/weixiao870428/p/3524055.html http://download.csdn.net/download/love_javc_you/ ...
- Android 高级UI设计笔记03:使用ListView实现左右滑动删除Item
1. 这里就是实现一个很简单的功能,使用ListView实现左右滑动删除Item: (1)当我们在ListView的某个Item,向左滑动显示一个删除按钮,用户点击按钮,即可以删除该项item,并且有 ...
- 微信小程序实现滑动删除效果
在一些app中,随处可见左滑动的效果,在微信小程序中,官方并未提供相关组件,需要我们自己动手写一个类似的效果 下面仅列举出核心代码,具体的优化需要根据你自身的需求 <view class='li ...
- 原生H5页面模拟APP左侧滑动删除效果
话不多说,往左侧滑动,显示删除,我们先来看一下效果图:如下: 这个布局我就不多说,反正就是一行ul,li, class名“item” js代码如下: $(".item").on(& ...
- ListView的item中有button和checkbox,listview的点击事件无效
ListView的item中有button和checkbox,listview的点击事件无效,解决办法: 在item布局文件中的根控件中添加属性设置: android:descendantFocusa ...
- spirng中的asm与jdk不兼容<已解决>
转载自:spirng中的asm与jdk不兼容<已解决> 前言 不知道前面对eclipse做了什么,使用maven来创建项目,然后转成web,启动的时候一直报错.我弄了好久,还是无法解决,先 ...
- Windows平台下在Emacs中使用plantuml中文乱码问题(已解决)
Windows平台下在Emacs中使用plantuml中文乱码问题(已解决) */--> code {color: #FF0000} pre.src {background-color: #00 ...
- ListView滑动删除效果实现
通过继承ListView然后结合PopupWindow实现 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0" ...
随机推荐
- cocos2d-x载入texture
转自:http://blog.csdn.net/aa4790139/article/details/8107325 SpriteTestLayer.cpp(就只改了这个这个文件) #include & ...
- Objective-C中一种消息处理方法performSelector: withObject:
Objective-C中调用函数的方法是“消息传递”,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法.所以Objective-C可以在runtime的 ...
- 判断richtextbox选中的是否为图片
) { Text = "Img"; } else { Text = "Form1"; }
- 在TextView使用部分颜色文字
/** * change a part of string color. * * @param string * whole string. * @param subString * the sub ...
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)
Spring更新到3.0之后,其MVC框架加入了一个非常不错的东西——那就是REST.它的开放式特性,与Spring的无缝集成,以及Spring框架的优秀表现,使得现在很多公司将其作为新的系统开发框架 ...
- ASP.NET 开发人员应该知道的8个网站
1.CodeProject http://www.codeproject.com/ 2.DotNetNuke 3.4GuysFromRolla 4.DevSource 5.DevX http://ww ...
- 在jsp中的css
div#one{}div#two{ width:auto; height:20px;background-color:#FAEBD7;text-align:right;}div#three{ widt ...
- 将vs2012的项目转化成VS2010
vs2012生成的项目,如何在只装有VS2010的电脑上打开, 步骤: 1.打开一个记事本,将你的Vs2012生成的项目解决方案文件(.sln文件)文件拖到记事本中 2.修改前两行 Microsof ...
- 转:四种方案解决ScrollView嵌套ListView问题
转载自:http://blog.sina.com.cn/s/blog_46798aa80101lxbk.html 原始的连接已经不知道是哪里了,项目中遇到了同样的问题,花了一下午都没有想到是嵌套引起的 ...
- jasper
package jasper; import java.util.ArrayList;import java.util.HashMap;import java.util.Map; import net ...