SwipeRefreshListView

来源:互联网 发布:淘宝卖玉的哪家好 编辑:程序博客网 时间:2024/06/14 01:35

通常我们只对ListView进行刷新与加载更多,而google自带的SwipeRefreshLayout刷新控件相当于一个容器,本文记录将SwipeRefreshLayout与ListView进行封装。

public class SwipeRefreshListViewextends 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(LoadMoreListenerloadMoreListener) { this.loadMoreListener= loadMoreListener; }   /** *  * @description 设置点击监听 * @param itemClickListener */ public void setItemClickListener(ItemClickListeneritemClickListener) { this.itemClickListener= itemClickListener; }   /** *  * @description 初始化界�? * @param context */ private void initView(Contextcontext) { listView.setId(android.R.id.list);//给这个listview添加�?个默认的id listView.setDivider(null); listView.setDividerHeight(0); listView.setSelector(newColorDrawable(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(BaseAdapteradapter) { listView.setAdapter(adapter); }   @Override public void setRefreshing(booleanrefreshing) { if (!refreshing&& null != loadMoreLayout) { loadMoreLayout.setVisibility(View.GONE); } super.setRefreshing(refreshing); }   /** *  * @description 是否显示加载更多 * @param visible */ public void setFooterViewVisible(intvisible) { loadMoreLayout.setVisibility(visible); }   @Override public void onScrollStateChanged(AbsListViewview, int scrollState) {   }   @Override public void onScroll(AbsListViewview, int firstVisibleItemint visibleItemCount, inttotalItemCount) { // 滚动至底�? if (firstVisibleItem!=0&& view.getLastVisiblePosition()== view.getCount()- 1) { loadMoreLayout.setVisibility(View.VISIBLE); loadMoreListener.loadMore(); } }   @Override public void onItemClick(AdapterView<?>parent, View view, int positionlong id) { if(itemClickListener!=null){ itemClickListener.itemClick(position); } }   public interface LoadMoreListener {   public void loadMore(); }   public interface ItemClickListener {   public void itemClick(intposition); }

0 0
原创粉丝点击