SwipeRefreshListView
2015-07-08 21:48
295 查看
通常我们只对ListView进行刷新与加载更多,而google自带的SwipeRefreshLayout刷新控件相当于一个容器,本文记录将SwipeRefreshLayout与ListView进行封装。
public class SwipeRefreshListView extends SwipeRefreshLayout implements |
OnScrollListener, OnItemClickListener { | |
private ListView listView; | |
private LinearLayout loadMoreLayout;// FooterView布局 | |
private LoadMoreListener loadMoreListener; | |
private ItemClickListener itemClickListener; | |
public SwipeRefreshListView(Context context) { | |
super(context); | |
listView = new ListView(context); | |
initView(context); | |
} | |
public SwipeRefreshListView(Context context, AttributeSet attrs) { | |
super(context, attrs); | |
listView = new ListView(context, attrs); | |
initView(context); | |
} | |
/** | |
* | |
* @description 设置加载更多监听 | |
* @param loadMoreListener | |
*/ | |
public void setLoadMoreListener(LoadMoreListener loadMoreListener) { | |
this.loadMoreListener = loadMoreListener; | |
} | |
/** | |
* | |
* @description 设置点击监听 | |
* @param itemClickListener | |
*/ | |
public void setItemClickListener(ItemClickListener itemClickListener) { | |
this.itemClickListener = itemClickListener; | |
} | |
/** | |
* | |
* @description 初始化界�? | |
* @param context | |
*/ | |
private void initView(Context context) { | |
listView.setId(android.R.id.list);//给这个listview添加�?个默认的id | |
listView.setDivider(null); | |
listView.setDividerHeight(0); | |
listView.setSelector(new ColorDrawable(Color.TRANSPARENT)); | |
listView.setOnScrollListener(this); | |
listView.setOnItemClickListener(this); | |
this.addView(listView); | |
// 加载更多 | |
loadMoreLayout = (LinearLayout) LayoutInflater.from(context).inflate( | |
R.layout.layout_load_more, null); | |
listView.addFooterView(loadMoreLayout); | |
loadMoreLayout.setVisibility(View.GONE); | |
// 设置刷新颜色 | |
setColorSchemeResources(R.color.refresh_color1, R.color.refresh_color2, | |
R.color.refresh_color3, R.color.refresh_color4); | |
} | |
/** | |
* | |
* @description 设置适配�? | |
* @param adapter | |
*/ | |
public void setAdapter(BaseAdapter adapter) { | |
listView.setAdapter(adapter); | |
} | |
@Override | |
public void setRefreshing(boolean refreshing) { | |
if (!refreshing && null != loadMoreLayout) { | |
loadMoreLayout.setVisibility(View.GONE); | |
} | |
super.setRefreshing(refreshing); | |
} | |
/** | |
* | |
* @description 是否显示加载更多 | |
* @param visible | |
*/ | |
public void setFooterViewVisible(int visible) { | |
loadMoreLayout.setVisibility(visible); | |
} | |
@Override | |
public void onScrollStateChanged(AbsListView view, int scrollState) { | |
} | |
@Override | |
public void onScroll(AbsListView view, int firstVisibleItem, | |
int visibleItemCount, int totalItemCount) { | |
// 滚动至底�? | |
if (firstVisibleItem!=0 && view.getLastVisiblePosition() == view.getCount() - 1) { | |
loadMoreLayout.setVisibility(View.VISIBLE); | |
loadMoreListener.loadMore(); | |
} | |
} | |
@Override | |
public void onItemClick(AdapterView<?> parent, View view, int position, | |
long id) { | |
if(itemClickListener!=null){ | |
itemClickListener.itemClick(position); | |
} | |
} | |
public interface LoadMoreListener { | |
public void loadMore(); | |
} | |
public interface ItemClickListener { | |
public void itemClick(int position); | |
} |
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- android中ListView数据刷新时的同步方法
- Android提高之ListView实现自适应表格的方法
- Android中实现水平滑动(横向滑动)ListView示例
- C#实现ListView选中项向上或向下移动的方法
- C# listview添加combobox到单元格的实现代码
- ListView Adapter优化 实例
- Android用ListView显示SDCard文件列表的小例子
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- asp.net ListView 数据绑定
- Android之ScrollView嵌套ListView和GridView冲突的解决方法
- android ListView和ProgressBar(进度条控件)的使用方法
- Repeater与ListView功能概述及使用介绍
- Android开发之ListView列表刷新和加载更多实现方法
- android ListView和GridView拖拽移位实现代码
- ListView的Adapter使用(绑定数据) 之 自定义每一项的布局去绑定数据
- Android实现为ListView同时设置点击时的背景和点击松手之后的背景
- Android ListView的item背景色设置和item点击无响应的解决方法