Android ListView相关开源项目汇总

来源:互联网 发布:java waitfor 返回值1 编辑:程序博客网 时间:2024/05/18 01:32

在这篇blog中,我将会列出众多我收集到的与ListView相关的开源项目。因为这些项目的存在,ListView的交互性变得更友好,性能变得更加的优越。通过使用这些项目,你可以轻松的让你的ListView实现下拉刷新、拖拽排序,滑动删除等功能。

bauerca/drag-sort-listview

项目地址:https://github.com/bauerca/drag-sort-listview

通过bauerca的drag-sort-listview项目,你可以轻松的实现Listview的拖拽排序。就像下面所展示的这样

除此之外,drag-sort-listview也提供了滑动删除的功能,就像下面这样

项目的使用方法你可以参考作者的项目文档。这里需要补充的是,如果你和我一样是用的是gradle构建的话,我建议你使用下面的依赖方式,是的,这的确不是由项目作者提供的依赖库。但是由于该项目已经停止维护,所以如此使用完全没有任何问题。

repositories {    maven {        url 'https://github.com/Goddchen/mvn-repo/raw/master/'    }}dependencies {    compile 'com.mobeta.android.dslv:drag-sort-listview:0.6.1'}

47deg/android-swipelistview

项目地址:https://github.com/47deg/android-swipelistview
项目sample地址:https://github.com/47deg/android-swipelistview-sample

通过47deg的android-swipelistview项目,你可以让你的Listview实现各种与滑动相关的特效。下面这些功能,就是用android-swipelistview实现的

以上图片的功能分别是滑动Reveal,滑动删除,滑动选择。项目的使用说明请参考项目的官方文档。

johannilsson/android-pulltorefresh

项目地址:https://github.com/johannilsson/android-pulltorefresh

通过johannilsson的android-pulltorefresh项目你可以使你的listview实现下拉刷新的功能,就像下面这样。

另外一个与johannilsson/android-pulltorefresh相似的项目是erikwt/PullToRefresh-ListView

需要补充的事情是,在Android的Support中已经有了相应的组件,这也是,作者停止更新该项目的原因。

chrisbanes/Android-PullToRefresh

项目地址:https://github.com/chrisbanes/Android-PullToRefresh

通过chrisbanes的Ansdroid-PullToRefresh你可以实现Listview的下拉刷新功能。事实上,这就是johannilsson/android-pulltorefresh实现的功能。区别在于,chrisbanes/Android-PullToRefresh除了实现了ListView的下拉刷新,还实现了其他容器的下拉刷新。因此可以说,chrisbanes/Android-PullToRefresh是升级版的johannilsson/android-pulltorefresh。

chrisbanes/ActionBar-PullToRefresh

项目地址:https://github.com/chrisbanes/ActionBar-PullToRefresh

通过chrisbanes的ActionBar-PullToRefresh你可是实现ListView的下拉刷新功能。和chrisbanes/Android-PullToRefresh区别的是,chrisbanes/ActionBar-PullToRefresh是通过ActionBar的交互实现的下拉刷新,就像下面这样

timroes/SwipeToDismissUndoList

项目地址:https://github.com/timroes/SwipeToDismissUndoList 项目sample地址:https://github.com/timroes/SwipeToDismissUndoDemo

通过timroes的SwipeToDismissUndoList,你可以简单的实现Listview的滑动删除功能。这个功能在上面的几个项目中似乎都得到了实现。但是需要注意的事情是,timroes的SwipeToDismissUndoList实现了撤销删除的功能。就像下面展示的这样

timroes的SwipeToDismissUndoList的实现是基于JakeWharton/SwipeToDismissNOA和romannurik/Android-SwipeToDismiss。如果你有兴趣,可以去关注一下他们。

lucasr/smoothie

项目地址:https://github.com/lucasr/smoothie

通过lucasr的smoothie,你可以极大的提升你的Listview的性能。他使用的技术被我称之为交互意识。通过smoothie项目,你的Listview会根据你对Listview的交互,动态的加载Item。当你在fliping时,Listview不会开启加载任务。而当停止fliping或者将要停止fliping时,加载任务才会真正开始。详细内容,你可以阅读我翻译的ListView性能优化指南这篇blog的最后一条建议。

ManuelPeinado / MultiChoiceAdapter

项目地址:https://github.com/ManuelPeinado/MultiChoiceAdapter

通过ManuelPeinado的MultiChoiceAdapter你可以简单是实现ListView的多选功能。就像下面所展示的这样

是的,官方已经提供了非常优秀的API了。但是通过使用ManuelPeinado的MultiChoiceAdapter,你可以在方便的在低版本中使用到该功能。

需要补充的事情是,在进入了CAB模式后,选中的item并不会有明显的变化。因此很容易让人误以为没有进入MultiChoice模式。为了使得CAB模式更加明显,你可以设置Item对应的Layout的background。注意,要使用的是statedrawable。需要对应的state是stateactivated。当然除了更改style,你还可以在Item中加入CheckBox或者CheckedTextView这样的控件。

ContentMenu

事实上,对于Listview的ContentMenu似乎并没有什么开源项目。放在这里的原因是,Android对于Listview的ContentMenu做了一些优化,我觉得很有必要一起放在这里。

关于ContentMenu的使用,你可以直接参考Android的API。这里需要补充的事情是,registerForContextMenu()方法的参数是listview即可,不需要是item。另外通过item.getMenuInfo()方法获取AdapterContextMenuInfo,进而获取对应item的id和position等信息。代码如下:

@Overridepublic boolean onContextItemSelected(MenuItem item) {    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();    switch (item.getItemId()) {     ...........    }}

该获取到的MenuInfo,其实就是onCreateContextMenu()方法的参数menuInfo。

0 0
原创粉丝点击