SwipeRefreshListView

通常我们只对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);
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值