- 浏览: 2135768 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
如果想做带有刷新、加载更多功能的listview,我们可以使用XListview。(已经停止维护,github地址:https://github.com/Maxwin-z/XListView-Android)
如果想做带有滑动删除功能的listview,我们可以使用SwipeListview。(github地址:https://github.com/47deg/android-swipelistview)
如果想做刷新、加载更多、滑动删除的listview呢?抱歉,我暂时还没有发现同时拥有这些功能的listview。不过,我们可以整合多个开源项目,做出这样的效果。
如果要实现这个功能,我们需要两个开源项目的配合,一个就是XListview,来实现刷新加载功能,而滑动删除功能,我们则需要另外一个大神的开源项目,AndroidSwipeLayout(github地址:https://github.com/daimajia/AndroidSwipeLayout)。
话不多说,我们先看一下做出来的效果。
我感觉效果很不错,对于一般的开发需求来说,已经够了,下面,我们看一下项目的集成过程。
daimajia.swipe是AndroidSwipeLayout的代码,me.maxwin.view是XListview的代码,不需要再导入其他的lib包了。
layout文件夹下面的xlistview_footer,xlistview_header是XListview项目需要的布局文件,values文件夹下面的attrs是
SwipeLayout一些预置参数,colors是用到的两个颜色值,strings是XListview用到的字符串常量。
介绍完一些重要的文件夹,我们看一下ListViewAdapter的代码实现。
如果我们想使用带有滑动布局的listvew,我们需要继承BaseSwipeAdapter,然后对上面代码中提到的重要方法进行实现。
除了adapter需要改变之外,我们还需要修改listview的item的布局文件。
下面是listview_item.xml的代码实现。
整个item的布局内容需要用SwipeLayout包裹起来,然后添加id,这个id我们需要在adapter里面作为
getSwipeLayoutResourceId()的返回值。
设置好adapter之后,我们就可以在MainActivity里面为我们的xlistview添加适配器了,下面是一个简单的例子。
好了,完成这些之后,我们就实现了刷新、加载、滑动删除功能的多功能lixtview了。
项目的源代码,github下载。
https://github.com/daimajia/AndroidSwipeLayout
如果想做带有滑动删除功能的listview,我们可以使用SwipeListview。(github地址:https://github.com/47deg/android-swipelistview)
如果想做刷新、加载更多、滑动删除的listview呢?抱歉,我暂时还没有发现同时拥有这些功能的listview。不过,我们可以整合多个开源项目,做出这样的效果。
如果要实现这个功能,我们需要两个开源项目的配合,一个就是XListview,来实现刷新加载功能,而滑动删除功能,我们则需要另外一个大神的开源项目,AndroidSwipeLayout(github地址:https://github.com/daimajia/AndroidSwipeLayout)。
话不多说,我们先看一下做出来的效果。
我感觉效果很不错,对于一般的开发需求来说,已经够了,下面,我们看一下项目的集成过程。
daimajia.swipe是AndroidSwipeLayout的代码,me.maxwin.view是XListview的代码,不需要再导入其他的lib包了。
layout文件夹下面的xlistview_footer,xlistview_header是XListview项目需要的布局文件,values文件夹下面的attrs是
SwipeLayout一些预置参数,colors是用到的两个颜色值,strings是XListview用到的字符串常量。
介绍完一些重要的文件夹,我们看一下ListViewAdapter的代码实现。
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import com.daimajia.swipe.SimpleSwipeListener; import com.daimajia.swipe.SwipeLayout; import com.daimajia.swipe.adapters.BaseSwipeAdapter; /** * * @author iaiai * */ public class ListViewAdapter extends BaseSwipeAdapter { // 上下文对象 private Context mContext; // 构造函数 public ListViewAdapter(Context mContext) { this.mContext = mContext; } // SwipeLayout的布局id @Override public int getSwipeLayoutResourceId(int position) { return R.id.swipe; } @Override public View generateView(int position, ViewGroup parent) { View v = LayoutInflater.from(mContext).inflate(R.layout.listview_item, parent, false); final SwipeLayout swipeLayout = (SwipeLayout) v .findViewById(getSwipeLayoutResourceId(position)); // 当隐藏的删除menu被打开的时候的回调函数 swipeLayout.addSwipeListener(new SimpleSwipeListener() { @Override public void onOpen(SwipeLayout layout) { Toast.makeText(mContext, "Open", Toast.LENGTH_SHORT).show(); } }); // 双击的回调函数 swipeLayout .setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() { @Override public void onDoubleClick(SwipeLayout layout, boolean surface) { Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show(); } }); // 添加删除布局的点击事件 v.findViewById(R.id.ll_menu).setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(mContext, "delete", Toast.LENGTH_SHORT).show(); //点击完成之后,关闭删除menu swipeLayout.close(); } }); return v; } //对控件的填值操作独立出来了,我们可以在这个方法里面进行item的数据赋值 @Override public void fillValues(int position, View convertView) { TextView t = (TextView) convertView.findViewById(R.id.position); t.setText((position + 1) + "."<p class="p1"><span class="s1"> + </span>"我就是一行很长很长很长很长很长很长很长很长很长很长很长很长很长的测试文本"</p>); } @Override public int getCount() { return 20; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } }
如果我们想使用带有滑动布局的listvew,我们需要继承BaseSwipeAdapter,然后对上面代码中提到的重要方法进行实现。
除了adapter需要改变之外,我们还需要修改listview的item的布局文件。
下面是listview_item.xml的代码实现。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="80dp" > <com.daimajia.swipe.SwipeLayout android:id="@+id/swipe" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/ll_menu" android:layout_width="100dp" android:layout_height="match_parent" android:background="@android:color/holo_red_light" android:gravity="center" > <ImageView android:id="@+id/trash" android:layout_width="25dp" android:layout_height="25dp" android:src="@drawable/trash" /> <TextView android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除" android:textColor="#ffffff" android:textSize="15sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/item_selector" android:padding="6dp" > <TextView android:id="@+id/position" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </com.daimajia.swipe.SwipeLayout> </LinearLayout>
整个item的布局内容需要用SwipeLayout包裹起来,然后添加id,这个id我们需要在adapter里面作为
getSwipeLayoutResourceId()的返回值。
设置好adapter之后,我们就可以在MainActivity里面为我们的xlistview添加适配器了,下面是一个简单的例子。
import me.maxwin.view.XListView; import me.maxwin.view.XListView.IXListViewListener; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.Toast; /** * * @author zhaokaiqiang * */ public class MainActivity extends Activity { private XListView mListView; // 只是用来模拟异步获取数据 private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handler = new Handler(); mListView = (XListView) findViewById(R.id.xListView); // 设置xlistview可以加载、刷新 mListView.setPullLoadEnable(true); mListView.setPullRefreshEnable(true); // 设置回调函数 mListView.setXListViewListener(new IXListViewListener() { @Override public void onRefresh() { // 模拟刷新数据,1s之后停止刷新 handler.postDelayed(new Runnable() { @Override public void run() { mListView.stopRefresh(); Toast.makeText(MainActivity.this, "refresh", Toast.LENGTH_SHORT).show(); } }, 1000); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { // 模拟加载数据,1s之后停止加载 @Override public void run() { mListView.stopLoadMore(); Toast.makeText(MainActivity.this, "loadMore", Toast.LENGTH_SHORT).show(); } }, 1000); } }); // 设置适配器 mListView.setAdapter(new ListViewAdapter(this)); } }
好了,完成这些之后,我们就实现了刷新、加载、滑动删除功能的多功能lixtview了。
项目的源代码,github下载。
https://github.com/daimajia/AndroidSwipeLayout
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 561本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1013颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 916从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1008Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 884Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 754前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 844监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 718在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 808最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1207##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 980当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 664setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1387问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 669底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1639点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1284import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2177TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1431一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 780Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 878最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
实现了listview滑动删除功能的下拉刷新加载更多功能的整合
android Listview下拉刷新 上拉(滑动分页)加载更多 高仿新浪微博下拉刷新,同时实现了滑动加载下一页
Android下拉刷新+上拉加载+滑动删除的ListView,简单易用,快速集成到应用。
SwipeRefreshLayout结合RecyclerView实现下拉刷新和滑动加载更多 现在很多界面都是要求,下拉刷新,列表项目更多的时候,滑动加载更多,就像微信朋友圈一样,下拉时要刷新,向上滑动要实 现“加载更多”。 我也是...
SwipeRefreshLayout结合RecyclerView实现下拉刷新和向上滑动“加载更多”功能 现在很多界面都是要求,下拉刷新,列表项目多的时候,滑动加载更多,就像微信朋友圈一样,下拉时要刷新,向上滑动要实现“加载更多”。 ...
自定义listview,实现listview的下拉刷新和加载更多功能
Android上拉下拉刷新加载更多ListView,支持设置上拉和下拉的可用性,支持设置滑动到底部自动加载更多。
Android 仿美团网,使用ViewPager+GridView或使用ViewPager+RecyclerView实现左右滑动查看更多分类的功能
android 自定义 ListView,糅合了 滑动删除,上拉刷新,下拉加载更多,长按编辑,点击事件 的功能组件。
通用所有以linearlayout为容器的View,实现下拉刷新。
一个简单的移动端下滑刷新,上滑加载更多的示例,简便易懂!
一个顺滑又漂亮的Android下拉刷新与加载更多列表组件。 根据系统自带ListView源码改造而来: 增加下拉刷新及滚动到底部自动加载的功能; 增加越界回弹效果; 增加自定义列表项动画的功能; 与其他下拉刷新列表...
http://blog.csdn.net/qq_32673327/article/details/52012327 这是关于Demo实现的博客
实现Android 界面滑动效果 代码易懂全面
在 https://github.com/android-cjj/Android-MaterialRefreshLayout/blob/master/README-cn.md 看到一个很好的下拉刷新上拉加载更多的MaterialRefreshLayout,但是 上拉的体验不是很好,没有动画效果,并且是触犯上拉滑动 ...
android 上下 刷新
Android仿qq,微信 滑动删除功能
* Android下拉刷新自动加载更多 * @author mzba * */ public class PullToRefreshActivity extends ListActivity { private LinkedList, String>> mListItems; private NewsAdapter adapter; private int ...
android 下拉刷新上拉加载更多,高仿ios左滑动删除item,解决了众多手势问题 这10分值得你下! 解决小白们吧,大牛看得不爽的谢谢给予指正啊!谢谢了