- 浏览: 2204115 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 635本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1111颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 1005从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1181Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1020Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 848前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 937监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 808在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 979最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1344##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1143当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 791setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1525问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 781底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1792点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1383import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2337TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1567一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 880Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 941最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
在这个项目中,我们关注的是如何将"滑动删除"和"下拉刷新加载更多"这两个功能整合到一个ListView中,提升用户体验。以下是对这两个功能的详细解释以及实现方法。 **滑动删除(Swipe to Delete)** 滑动删除是用户...
本教程将深入探讨如何使用xListView框架实现异步加载网络图片,并且支持上拉加载更多和下拉刷新功能,提升用户体验。 首先,xListView是Android平台上的一个开源库,它扩展了原生的ListView组件,提供了更丰富的...
为了提升用户体验,开发者经常需要在ListView中实现下拉刷新、上拉加载和滑动删除等功能。本篇将详细讲解如何在Android中实现这些特性。 下拉刷新(Pull-to-Refresh)功能允许用户通过向下拉动列表来获取最新数据。...
总之,下拉刷新和上拉加载更多是提升Android应用用户体验的关键特性,通过合理使用开源库和自定义事件监听,可以轻松地在ListView中实现这些功能。开发者可以根据项目需求选择合适的库,或者自定义实现,以满足各种...
在Android应用开发中,下拉刷新和上拉加载更多的功能已经成为许多列表视图的标准特性,让用户可以方便地获取更多数据而无需离开当前页面。XListView是Android社区中一个流行的开源库,专门用于实现这种功能。这个库...
SwipeRefreshLayout结合RecyclerView实现下拉刷新和滑动加载更多 现在很多界面都是要求,下拉刷新,列表项目更多的时候,滑动加载更多,就像微信朋友圈一样,下拉时要刷新,向上滑动要实 现“加载更多”。 我也是...
然而,原生的ListView并不直接支持上拉刷新和下拉加载更多的功能,这在现代应用程序中是非常常见且必要的特性。"XListview"是一个专门为解决这个问题而设计的库,它为ListView提供了上拉刷新(Pull-to-Refresh)和...
ListView不仅支持滑动滚动,还可以通过集成下拉刷新和上拉加载更多功能,提升用户体验。这篇博客文章将详细介绍如何在Android项目中实现ListView的这两种高级特性。 首先,下拉刷新(Pull-to-Refresh)功能允许用户...
总之,这个Demo提供了一个集成上拉加载更多、下拉刷新和选择性item侧滑功能的解决方案,对于Android开发者来说,这是一个非常实用的学习资源。通过研究和理解这个Demo,开发者可以更好地掌握如何在实际项目中实现...
XListView的核心在于监听用户的滑动事件,并根据滑动方向触发相应的刷新或加载更多操作。它通过覆写ListView的滚动回调方法,分析滚动状态,当用户滑动到底部时触发加载更多,滑动到顶部时触发刷新。这一过程涉及的...
在Android应用中,下拉刷新和加载更多功能能提升用户体验,使数据加载更加灵活。通过使用SwipeRefreshLayout实现下拉刷新,以及自定义ListView适配器和监听滚动事件实现加载更多,开发者可以在自己的应用中轻松集成...
在用户滚动到顶部时实现“下拉刷新”以及在滚动到底部时触发“加载更多”功能,是现代移动应用中常见的用户体验设计。下面将详细介绍如何自定义GridView以实现这两个特性。 首先,理解下拉刷新和加载更多的概念。...
在这个项目中,我们主要关注的是如何在ListView中实现上拉加载更多和下拉刷新的功能,这些都是移动应用开发中的关键特性。 首先,我们来看“仿微信、QQ聊天界面”。微信和QQ的聊天界面以其直观易用的设计而闻名,...
SwipeRefreshLayout结合RecyclerView实现下拉刷新和向上滑动“加载更多”功能 现在很多界面都是要求,下拉刷新,列表项目多的时候,滑动加载更多,就像微信朋友圈一样,下拉时要刷新,向上滑动要实现“加载更多”。 ...
在Android开发中,下拉刷新(SwipeRefreshLayout)和加载更多(Load More)是常见的功能,它们为用户提供了更友好的交互体验。本文将详细介绍如何基于Android官方提供的组件实现这一功能,以及其工作原理。 首先,...
本篇文章将详细介绍如何通过自定义ListView,融合"上拉刷新"、"下拉加载更多"、"滑动删除"、"长按编辑"以及"点击事件"等功能,以打造一个强大的X李斯特View组件。 首先,我们要理解每个功能的核心原理: 1. **上拉...
在标题提到的“android ListView左滑动删除选项并且支持下拉刷新和上拉加载更多功能控件”中,我们主要关注的是三个核心功能:滑动删除、下拉刷新和上拉加载更多。 1. **滑动删除(Swipe to Delete)**: 这是一种...
在Android开发中,上拉刷新和下拉加载是常见的组件功能,用于提升用户体验,使得用户在滚动到底部时可以加载更多数据,而在顶部时可以刷新已有数据。本资源"Android高级应用源码-XListview实现上拉刷新下拉加载功能....
在Android开发中,ListView是常用的数据展示控件,但原生的ListView并不支持下拉刷新和上拉加载更多这样的交互功能。为了解决这个问题,开发者通常会借助第三方库,如本话题中的XListView。XListView是一款强大的...