package com.chinaztt.fda.test;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.chinaztt.fda.ui.R;
import com.chinaztt.fda.ui.base.BaseActivity;
import com.chinaztt.fda.utils.UIUtils;
import com.chinaztt.fda.widget.PullToRefreshListView;
import org.androidannotations.annotations.EActivity;
import java.util.ArrayList;
import java.util.List;
/**
* 当前类注释:下拉刷新,上拉加载更多组件实例
* 项目名:FastDev4Android
* 包名:com.chinaztt.fda.test
* 作者:江清清 on 15/10/23 11:25
* 邮箱:jiangqqlmj@163.com
* QQ: 781931404
* 公司:江苏中天科技软件技术有限公司
*/
@EActivity
public class PullListviewActivity extends BaseActivity{
private PullToRefreshListView lv_pull_item;
private PullAdapter mPullAdapter;
private LayoutInflater mInflater;
private List<String> mTitles;
private View load_more;
private TextView load_more_tv; // listview底部加载view 显示数据
private ProgressBar load_more_progress; // listview底部加载view 显示进度
private LinearLayout load_next_page_layout;
private Handler newHandler=new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1){
refreshTitles();
UIUtils.savePullToRefreshLastUpdateAt(lv_pull_item,UIUtils.DEMO_PULL_TIME_KEY);
//刷新view
mPullAdapter.notifyDataSetChanged();
}else if(msg.what==2){
moreTitles();
//刷新view
mPullAdapter.notifyDataSetChanged();
showToastMsgShort("加载更多数据成功...");
load_more_tv.setText("数据加载完成");
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pull_listview_layout);
lv_pull_item=(PullToRefreshListView)this.findViewById(R.id.lv_pull_item);
mInflater=getLayouInflater();
//特别注意 里边的view的控件可以根据当前的状态 修改字符串信息
load_more = mInflater.inflate(R.layout.load_more_footview_layout,
null);
load_more_tv = (TextView) load_more
.findViewById(R.id.load_next_page_text);
load_more_progress = (ProgressBar) load_more
.findViewById(R.id.load_next_page_progress);
load_next_page_layout = (LinearLayout) load_more
.findViewById(R.id.load_next_page_layout);
//listview添加尾部 上拉加载更多view
lv_pull_item.addFooterView(load_more, null, false);
load_more_tv.setText("上拉加载更多数据...");
initTitles();
//初始化 上次下拉刷新的时间
UIUtils.setPullToRefreshLastUpdated(lv_pull_item,UIUtils.DEMO_PULL_TIME_KEY);
mPullAdapter=new PullAdapter();
lv_pull_item.setAdapter(mPullAdapter);
//listview item点击事件处理
lv_pull_item.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int index = position++;
showToastMsgShort("点击了第:" + index + "个item");
}
});
//listview 开始下拉刷新回调函数
lv_pull_item.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
@Override
public void onRefresh() {
//进行加载数据
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
newHandler.sendEmptyMessage(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
});
//listview 滑动 进行上拉加载更多
lv_pull_item.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
if (lv_pull_item.getLastVisiblePosition() == (lv_pull_item
.getCount() - 1)) {
load_more_tv.setText("正在加载最新数据....");
//进行获取最新数据
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
newHandler.sendEmptyMessage(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
//正在滑动中,当前listview正在滑动 可以暂停图片加载器或者其他一些耗时操作
} else {
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
}
private void initTitles(){
mTitles=new ArrayList<String>();
for(int i=0;i<20;i++){
int index=i+1;
mTitles.add("当前是:"+index+"");
}
}
private void refreshTitles(){
List<String> newTitles=new ArrayList<String>();
for(int i=0;i<5;i++){
int index=i+1;
newTitles.add("新数据是:"+index+"");
}
newTitles.addAll(mTitles);
mTitles.removeAll(mTitles);
mTitles.addAll(newTitles);
}
private void moreTitles(){
List<String> newTitles=new ArrayList<String>();
for(int i=0;i<8;i++){
int index=i+1;
newTitles.add("更多数据是:"+index+"");
}
mTitles.addAll(newTitles);
}
class PullAdapter extends BaseAdapter{
@Override
public int getCount() {
return mTitles.size();
}
@Override
public Object getItem(int position) {
return mTitles.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Hondler _Hondler=null;
if(convertView==null){
_Hondler=new Hondler();
convertView=mInflater.inflate(R.layout.lv_main_item,null);
_Hondler.tv_item=(TextView)convertView.findViewById(R.id.tv_item);
convertView.setTag(_Hondler);
}else
{
_Hondler=(Hondler)convertView.getTag();
}
_Hondler.tv_item.setText(mTitles.get(position));
return convertView;
}
}
static class Hondler{
TextView tv_item;
}
}