Android 第三方开源SwipeToDismiss:左滑/右滑删除ListView条目Item

Android的SwipeToDismiss是github上一个第三方开源框架(github上的项目链接地址: https://github.com/romannurik/Android-SwipeToDismiss  )。该开源项目旨在:使得一个ListView的item在用户的手指在屏幕上左滑或者右滑时候,删除当前的这个ListView Item。
 此种特效在新版的Android中应用不少,比如在Android 5.0及以上版本中,通知栏下拉菜单中的条目,就是这种操作效果,用户把通知栏下拉出来,手指轻触某一项,左滑或者右滑,删除(清除)此项。
 在   https://github.com/romannurik/Android-SwipeToDismiss  上下载到到库文件有两个(此说是基于截止2015年7月27日的版本,后续版本也许会有所不同):SwipeDismissListViewTouchListener.java 和 SwipeDismissTouchListener.java 。如果只是打算简单的只是支持一个ListView列表中item左滑/右滑删除,那么仅仅只导入SwipeDismissListViewTouchListener.java这一个库文件即可。

现在就给出一个简单例子,说明如何改造一个标准ListView,使其支持左右滑动某个item然后删除之。

效果如图:


java代码如下:

package com.example.swipetodismiss;

import java.util.ArrayList;
import java.util.List;

import com.example.android.swipedismiss.SwipeDismissListViewTouchListener;
import com.example.android.swipedismiss.SwipeDismissListViewTouchListener.DismissCallbacks;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	private ListView list_view;
	private List<String> list;
	private ArrayAdapter<String> adapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

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

		list = new ArrayList<String>();

		for (int i = 0; i < 30; i++) {
			list.add("测试数据" + i);
		}

		adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);

		list_view.setAdapter(adapter);
		// 将ListView传递过来。

		SwipeDismissListViewTouchListener swipeListener = new SwipeDismissListViewTouchListener(list_view,
				new DismissCallbacks() {
					// 此处将执行删除,记得要notifyDataSetChanged()。
					@Override
					public void onDismiss(ListView listView, int[] reverseSortedPositions) {

						for (int pos : reverseSortedPositions) {

							list.remove(pos);

						}

						adapter.notifyDataSetChanged();

					}

					@Override
					public boolean canDismiss(int position) {
						return true;
					}
				});

		list_view.setOnTouchListener(swipeListener);
	}

}


你可能感兴趣的:(Android 第三方开源SwipeToDismiss:左滑/右滑删除ListView条目Item)