package com.andbase.demo.activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import com.andbase.demo.R; import com.andbase.demo.adapter.PullToRefreshListAdapter; import com.andbase.demo.global.MyApplication; import com.andbase.library.app.base.AbBaseActivity; import com.andbase.library.asynctask.AbTask; import com.andbase.library.asynctask.AbTaskItem; import com.andbase.library.asynctask.AbTaskListListener; import com.andbase.library.util.AbLogUtil; import com.andbase.library.util.AbToastUtil; import com.andbase.library.view.listener.AbOnScrollListener; import com.andbase.library.view.refresh.AbPullToRefreshView; import com.andbase.library.view.sample.AbScrollListView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FloatTabActivity extends AbBaseActivity implements AbPullToRefreshView.OnHeaderRefreshListener, AbPullToRefreshView.OnFooterLoadListener { private MyApplication application; private List<Map<String, Object>> list = null; private AbPullToRefreshView mAbPullToRefreshView = null; private AbScrollListView mListView = null; private int currentPage = 1; private ArrayList<String> mPhotoList = new ArrayList<String>(); private PullToRefreshListAdapter pullToRefreshListAdapter = null; private int total = 50000; private int pageSize = 15; private LinearLayout top_bar = null; private int headerHeight = 300; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_float_tab); application = (MyApplication)this.getApplication(); top_bar = (LinearLayout)findViewById(R.id.top_bar); final RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)top_bar.getLayoutParams(); top_bar.setVisibility(View.INVISIBLE); // 获取ListView对象 mAbPullToRefreshView = (AbPullToRefreshView) this.findViewById(R.id.mPullRefreshView); for (int i = 0; i < 23; i++) { mPhotoList.add("http://www.amsoft.cn/demo/rand/" + i + ".jpg"); } mListView = (AbScrollListView) this.findViewById(R.id.mListView); mListView.setOnScrollListener(onScrollListener); mListView.addHeaderView(View.inflate(this,R.layout.activity_float_tab_list_header,null)); mListView.setHeaderHeight(headerHeight); // ListView数据 list = new ArrayList<Map<String, Object>>(); // 设置监听器 mAbPullToRefreshView.setOnHeaderRefreshListener(this); mAbPullToRefreshView.setOnFooterLoadListener(this); // 设置进度条的样式 mAbPullToRefreshView.getDefaultHeaderView().setHeaderProgressBarDrawable( this.getResources().getDrawable(R.drawable.progress_circular)); mAbPullToRefreshView.getFooterView().setFooterProgressBarDrawable( this.getResources().getDrawable(R.drawable.progress_circular)); // 使用自定义的Adapter pullToRefreshListAdapter = new PullToRefreshListAdapter(this, list,200,200); mListView.setAdapter(pullToRefreshListAdapter); // item被点击事件 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); refreshTask(); } @Override public void onFooterLoad(AbPullToRefreshView view) { loadMoreTask(); } @Override public void onHeaderRefresh(AbPullToRefreshView view) { refreshTask(); } private AbOnScrollListener onScrollListener = new AbOnScrollListener(){ @Override public void onScrollPosition(int position) { } @Override public void onScrollY(int scrollY) { if(scrollY == 0){ //恢复位置 top_bar.setVisibility(View.INVISIBLE); }else if(scrollY >= headerHeight){ //到达顶部 top_bar.setVisibility(View.VISIBLE); }else{ //中间区域 top_bar.setVisibility(View.INVISIBLE); } } }; public void refreshTask() { AbLogUtil.prepareLog(PullToRefreshListActivity.class); AbTask mAbTask = AbTask.newInstance(); final AbTaskItem item = new AbTaskItem(); item.setListener(new AbTaskListListener() { @Override public List<?> getList() { List<Map<String, Object>> newList = null; try { Thread.sleep(1000); currentPage = 1; newList = new ArrayList<Map<String, Object>>(); Map<String, Object> map = null; for (int i = 0; i < pageSize; i++) { map = new HashMap<String, Object>(); map.put("itemsIcon", mPhotoList.get(i)); map.put("itemsTitle", "item" + (i + 1)); map.put("itemsText", "item..." + (i + 1)); newList.add(map); } } catch (Exception e) { } return newList; } @Override public void update(List<?> paramList) { //通知Dialog AbLogUtil.d(PullToRefreshListActivity.class, "返回", true); List<Map<String, Object>> newList = (List<Map<String, Object>>) paramList; list.clear(); if (newList != null && newList.size() > 0) { list.addAll(newList); pullToRefreshListAdapter.notifyDataSetChanged(); newList.clear(); } mAbPullToRefreshView.onHeaderRefreshFinish(); } }); mAbTask.execute(item); } public void loadMoreTask() { AbTask mAbTask = AbTask.newInstance(); final AbTaskItem item = new AbTaskItem(); item.setListener(new AbTaskListListener() { @Override public void update(List<?> paramList) { List<Map<String, Object>> newList = (List<Map<String, Object>>) paramList; if (newList != null && newList.size() > 0) { list.addAll(newList); pullToRefreshListAdapter.notifyDataSetChanged(); newList.clear(); } mAbPullToRefreshView.onFooterLoadFinish(); } @Override public List<?> getList() { List<Map<String, Object>> newList = null; try { currentPage++; Thread.sleep(1000); newList = new ArrayList<Map<String, Object>>(); Map<String, Object> map = null; for (int i = 0; i < pageSize; i++) { map = new HashMap<String, Object>(); map.put("itemsIcon", mPhotoList.get(i)); map.put("itemsTitle", "item上拉" + ((currentPage - 1) * pageSize + (i + 1))); map.put("itemsText", "item上拉..." + ((currentPage - 1) * pageSize + (i + 1))); if ((list.size() + newList.size()) < total) { newList.add(map); } } } catch (Exception e) { currentPage--; newList.clear(); AbToastUtil.showToastInThread( FloatTabActivity.this, e.getMessage()); } return newList; }; }); mAbTask.execute(item); } }