Android可左右滑动的ListView开源框架SwipeMenuListView
来源:互联网 发布:金鼎网络微营销软件 编辑:程序博客网 时间:2024/05/22 06:49
Android开源框架SwipeMenuListView
开源框架SwipeMenuListView可以让ListView条目可滑动,并且在条目上面添加控件,并设置点击事件。
效果:
上面是我从源码中把主要的八个类,复制到我的项目中,就可以长久使用这个开源框架。而且直接复制网上的源码还是有点问题的(比如Menu资源文件报错!)
如图:
使用:
一.布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <!-- 提示一下:包名要跟程序实际包名一样--> <com.example.swip.swipemenulistview.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
二.java代码:
1.实例化自定View
SwipeMenuListView mListView= (SwipeMenuListView) findViewById(R.id.listView);
2.创建适配器,其实是一个继承BaseAdapter的类
AppAdapter mAdapter = new AppAdapter();
3.給ListView添加适配器
mListView.setAdapter(mAdapter);
4.创建SwipeMenuCreator对象,可以在里面设置滑动Itme后显示的视图控件,可以设置想要的个数。
具体代码看示例。。。
5.給SwipeMenuListView 添加SwipeMenuCreator对象
mListView.setMenuCreator(creator);
6.设置各种监听
//设置点击Item里面控件的监听 mListView.setOnMenuItemClickListener//设置点击Item条目的监听,长按Item条目的监听等等监听
其实SwipeMenuListView就是一个List View,不过这里多设置了几个方法,并添加了以恶小手势判断等等。
主方法类示例:
package com.example.swip;import android.app.Activity;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.util.TypedValue;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.example.swip.swipemenulistview.*;import java.util.ArrayList;import java.util.List;public class MyActivity extends Activity { private List<String> list = new ArrayList<String>(); private AppAdapter mAdapter; private SwipeMenuListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); for (int i = 0; i < 100; i++) { list.add("item" + i + "行"); } mListView = (SwipeMenuListView) findViewById(R.id.listView); mAdapter = new AppAdapter(); mListView.setAdapter(mAdapter); // step 1. create a MenuCreator SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { // create "open" item SwipeMenuItem openItem = new SwipeMenuItem( getApplicationContext()); // set item background openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE))); // set item width openItem.setWidth(dp2px(90)); // set item title openItem.setTitle("Open"); // set item title fontsize openItem.setTitleSize(18); // set item title font color openItem.setTitleColor(Color.WHITE); // add to menu menu.addMenuItem(openItem); // create "delete" item SwipeMenuItem deleteItem = new SwipeMenuItem( getApplicationContext()); // set item background deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25))); // set item width deleteItem.setWidth(dp2px(90)); // set a icon deleteItem.setIcon(R.drawable.ic_delete); // add to menu menu.addMenuItem(deleteItem); } }; // set creator mListView.setMenuCreator(creator); // step 2. listener item click event mListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { String item = list.get(position); switch (index) { case 0: // open Toast.makeText(MyActivity.this,"点击了open",Toast.LENGTH_LONG).show(); break; case 1: // delete// delete(item); list.remove(position); mAdapter.notifyDataSetChanged(); break; } return false; } }); // other setting// listView.setCloseInterpolator(new BounceInterpolator()); // test item long click mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), position + " long click", Toast.LENGTH_SHORT).show(); return false; } }); // test item click mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), position + " click", Toast.LENGTH_SHORT).show(); } }); } class AppAdapter extends BaseSwipListAdapter { @Override public int getCount() { return list.size(); } @Override public String getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(getApplicationContext(), R.layout.item_list, null); new ViewHolder(convertView); } ViewHolder holder = (ViewHolder) convertView.getTag(); String item = getItem(position); holder.iv_icon.setImageResource(R.drawable.ic_launcher); holder.tv_name.setText(item ); holder.iv_icon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MyActivity.this, "点击了图标", Toast.LENGTH_SHORT).show(); } }); holder.tv_name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MyActivity.this, "点击了文字", Toast.LENGTH_SHORT).show(); } }); return convertView; } class ViewHolder { ImageView iv_icon; TextView tv_name; public ViewHolder(View view) { iv_icon = (ImageView) view.findViewById(R.id.iv_icon); tv_name = (TextView) view.findViewById(R.id.tv_name); view.setTag(this); } } @Override public boolean getSwipEnableByPosition(int position) { //设置条目是否可以滑动// if (position % 2 == 0) {// return false;// } return true; } } private int dp2px(int dp) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()); }}
下面是我程序的源码:
http://download.csdn.net/detail/wenzhi20102321/9812332
随便也提供一下经过我简单修改后可运行的复杂源码(简单注释了Menu资源调用,否则不能运行程序):
http://download.csdn.net/detail/wenzhi20102321/9812331
注意:程序运行需要V4兼容包!
复杂源码效果:
其实一般应用简单效果就够了,所有的Item滑出的效果一样!复杂效果就是根据条目的内容或属性不同设置滑动后显示的数据不同,用得较少!
共勉:程序袁靠的是一种信念,说不清道不明!
1 1
- Android可左右滑动的ListView开源框架SwipeMenuListView
- 使用swipemenulistview实现列表的左右滑动
- 使用swipemenulistview实现列表的左右滑动
- 使用swipemenulistview实现列表的左右滑动
- android Gallery模拟左右滑动的listView
- SwipeMenuListView滑动删除框架
- ListView侧滑删除的实现,利用SwipemenuListView开源框架
- (开源工具)SwipeMenuListView滑动菜单的使用
- 带表头 固定列可左右上下滑动的可分页加载的ListView
- 可以左右滑动的ListView
- android 自定义view实现可左右滑动的Tabbar
- Android 实现item可左右滑动移除的GridView
- Android实现可左右滑动的选择控件
- Android使用highcharts实现可左右滑动的折线图
- Android酱油笔记之左右滑动的ListView实现
- android自定义控件--条目可以左右滑动的listview
- android中可左右滑动输入框
- android SwipeMenuListView ScrollView 滑动冲突
- task_struct
- 用Java Robot实现屏幕截取、远程监控
- 第七届蓝桥杯—冰雹数
- 利用JS封装iframe骗过搜索引擎
- Python中的排列和组合
- Android可左右滑动的ListView开源框架SwipeMenuListView
- muduo库中对线程池的实现(1)
- Spring学习-30:Spring中的事务管理之环境搭建
- mysql表的清空、删除和修改操作详解
- Wifi-direct 相关记录
- linux之进程详解与操作编程
- 2017年最新cvv2知识普及
- STM32中的几个时钟SysTick、FCLK、SYSCLK、HCLK(For STM32F10x)
- params、out和ref