Android最简单的滑动删除
来源:互联网 发布:论坛营销软件 编辑:程序博客网 时间:2024/06/10 11:09
之前由于项目需要,要写一个像QQ一样的滑动删除,自己想了一下发现Android自带控件HorizontalScrollView,就可以实现,应该是最简单的方法了。话不多说,直接上代码:
<?xml version="1.0" encoding="utf-8"?>
<!-- listview的每一项 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="horizontal">
<HorizontalScrollView
android:id="@+id/hr_ill_adp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:fillViewport="true">
<RelativeLayout
android:id="@+id/rl_1_item_ill_adp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
<RelativeLayout
android:id="@+id/rl_2_item_ill_adp"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_centerHorizontal="true">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="42dp"
android:text="显示的字" />
</RelativeLayout>
<RelativeLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/rl_3_item_ill_adp"
android:layout_alignParentRight="true">
<TextView
android:id="@+id/tv_delete_ill_adapter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:gravity="center"
android:text="删除" />
</RelativeLayout>
</RelativeLayout>
</HorizontalScrollView>
</LinearLayout>
这是listview的布局文件,一个HorizontalScrollView中,两个RelativeLayout,左边放文字,右边放删除按钮。
如何实现,删除按钮的划出呢,那就要使其刚开始在右边的界面外,来看Adapter代码如何设置的。
package com.example.myslidingdelete;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.FrameLayout.LayoutParams;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class AdapterDelete extends BaseAdapter
{
private List<String> list;
private Context context;
private int w;
private Handler handler;
public AdapterDelete(List<String> list , Context context,Handler handler){
this.list = list;
this.context = context;
this.handler = handler;
this.w = (int)(80 * context.getResources().getDisplayMetrics().density);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int location) {
return list.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
Log.i("", list.get(position)+"----"+position);
holder = new ViewHolder();
//加载布局
convertView = View.inflate(context, R.layout.item, null);
//找控件
holder.text = (TextView) convertView.findViewById(R.id.textView1);
holder.sc_r0 = (RelativeLayout) convertView.findViewById(R.id.rl_1_item_ill_adp);
holder.sc_r1 = (RelativeLayout) convertView.findViewById(R.id.rl_2_item_ill_adp);
holder.sc_r2 = (RelativeLayout) convertView.findViewById(R.id.rl_3_item_ill_adp);
LayoutParams l = new android.widget.FrameLayout.LayoutParams(MainActivity.SCREENWIDTH + w, w);
holder.sc_r0.setLayoutParams(l);
android.widget.RelativeLayout.LayoutParams l1 = new android.widget.RelativeLayout.LayoutParams(MainActivity.SCREENWIDTH, w);
holder.sc_r1.setLayoutParams(l1);
android.widget.RelativeLayout.LayoutParams l2 = new android.widget.RelativeLayout.LayoutParams(w, w);
l2.leftMargin = MainActivity.SCREENWIDTH;
holder.sc_r2.setLayoutParams(l2);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//赋值
holder.text.setText(list.get(position));
//删除
holder.sc_r2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.sendEmptyMessage(position);
}
});
return convertView;
}
private class ViewHolder{
private TextView text ;
private RelativeLayout sc_r0,sc_r1,sc_r2;
}
}
LayoutParams l = new android.widget.FrameLayout.LayoutParams(MainActivity.SCREENWIDTH + w, w);
holder.sc_r0.setLayoutParams(l);
android.widget.RelativeLayout.LayoutParams l1 = new android.widget.RelativeLayout.LayoutParams(MainActivity.SCREENWIDTH, w);
holder.sc_r1.setLayoutParams(l1);
android.widget.RelativeLayout.LayoutParams l2 = new android.widget.RelativeLayout.LayoutParams(w, w);
l2.leftMargin = MainActivity.SCREENWIDTH;
holder.sc_r2.setLayoutParams(l2);
第一个LayoutParams是HorizontalScrollView内最外层的RelativeLayout的布局,其宽度设置为:屏幕宽度+删除的按钮宽度,
第二个LayoutParams是文字外面的RelativeLayout的布局,其宽度设置为:屏幕宽度,
第三个LayoutParams是删除按钮外面的RelativeLayout的布局,其宽度设置为:删除按钮宽度,且距离左边距离为:屏幕宽度,这样初始化的时候就看不见删除按钮,滑动时就能看见。从而实现滑动删除。
好了,主要代码都在上面了,其中有些小问题,不影响使用,自己稍加修改即可。
如果要下载完整demo,请点击下面链接:
http://download.csdn.net/detail/u013790519/8526079
- Android最简单的滑动删除
- Android最简单的左右滑动轮播图,以及自动滚动
- Android简单实现滑动删除Item
- 最简单的左右滑动翻页案例
- iOS滑动返回的最简单实现
- 简单的listview item滑动删除
- 一个简单的自定义listview滑动删除
- android用最简单的方法实现QQ5.0的侧边栏滑动效果
- Android 自定义view 带滑动点击删除的的listview 简单版
- android滑动删除的一个开源项目SwipeDelMenuLayout的简单使用
- Android最简单的GridView嵌套GridView,解决滑动冲突问题
- Android实战简易教程<十四>(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)
- Android-->实现可滑动删除的Layout
- Android ListView滑动删除
- android,listView, 滑动删除
- android listview滑动删除
- Android ListView 滑动删除
- Android滑动删除控件
- android 测试用例编写
- 第一个乱写的HTML脚本 <!--我还是觉得注释标签太可爱-->
- Efficient multi-keyword ranked query over encrypted data in cloud computing (3)
- QT控制台输出QString
- 手机内存卡刷系统导致系统文件损坏怎么办
- Android最简单的滑动删除
- 为iPhone 6设计自适应布局
- 关于业务流程管理选择,CIO要了解这些
- C# 查找窗口,FindWindow用法
- ArcGIS中如何用CAD格式数据生成TIN模型
- Android Metro风格的Launcher开发系列第一篇
- eclipse自动补全设置
- Java中获得线程的返回值
- mysql Show processlist 整理