package com.zte.dontaijiazai;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout.LayoutParams;

public class DongtaijiazaiActivity extends ListActivity implements
OnScrollListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* "加载项"布局,此布局被添加到ListView的Footer中。
*/
mLoadLayout = new LinearLayout(this);
mLoadLayout.setMinimumHeight(60);
mLoadLayout.setGravity(Gravity.CENTER);
mLoadLayout.setOrientation(LinearLayout.HORIZONTAL);
/**
* 向"加载项"布局中添加一个圆型进度条。
*/
ProgressBar mProgressBar = new ProgressBar(this);
mProgressBar.setPadding(0, 0, 15, 0);
mLoadLayout.addView(mProgressBar, mProgressBarLayoutParams);
/**
* 向"加载项"布局中添加提示信息。
*/
mTipContent = new TextView(this);
mTipContent.setText("加载中数据中,请稍后...");
mLoadLayout.addView(mTipContent, mTipContentLayoutParams);
/**
* 获取ListView组件,并将"加载项"布局添加到ListView组件的Footer中。
*/
mListView = getListView();
mListView.addFooterView(mLoadLayout);
/**
* 组ListView组件设置Adapter,并设置滑动监听事件。
*/
setListAdapter(mListViewAdapter);
mListView.setOnScrollListener(this);
}

private boolean mFlag = false;
TextView mTipContent;


/**
* 第二个参数是listview的item隐藏的个数
* 第二个参数是listview可见的item个数
* 第三个参数是listview已经显示的总item项数
*/
public void onScroll(AbsListView view, int mFirstVisibleItem,
int mVisibleItemCount, int mTotalItemCount) {
Log.i("RG", "mFirstVisibleItem--->>>"+mFirstVisibleItem);
Log.i("RG", "mVisibleItemCount--->>>"+mVisibleItemCount);
Log.i("RG", "mTotalItemCount--->>>"+mTotalItemCount);
mLastItem = mFirstVisibleItem + mVisibleItemCount - 1;
if (mListViewAdapter.count > mCount) {
if (mFlag == false) {
mLoadLayout.removeViewAt(0);
mTipContent.setText("数据已加载完成......");
mFlag = true;
} else {
return;
}
}
}

public void onScrollStateChanged(AbsListView view, int mScrollState) {

/**
* 当ListView滑动到最后一条记录时这时,我们会看到已经被添加到ListView的"加载项"布局, 这时应该加载剩余数据。
*/
if (mLastItem == mListViewAdapter.count
&& mScrollState == OnScrollListener.SCROLL_STATE_IDLE) {
if (mListViewAdapter.count <= mCount) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mListViewAdapter.count += 10;
mListViewAdapter.notifyDataSetChanged();
mListView.setSelection(mLastItem);
}
}, 100);

}
}
}

class ListViewAdapter extends BaseAdapter {
int count = 10;

public int getCount() {
return count;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View view, ViewGroup parent) {
TextView mTextView;
if (view == null) {
mTextView = new TextView(DongtaijiazaiActivity.this);
} else {
mTextView = (TextView) view;
}
mTextView.setText("Item " + position);
mTextView.setTextSize(20f);
mTextView.setGravity(Gravity.CENTER);
mTextView.setHeight(60);
return mTextView;
}
}

private LinearLayout mLoadLayout;
private ListView mListView;
private ListViewAdapter mListViewAdapter = new ListViewAdapter();
private int mLastItem = 0;
private int mCount = 41;
private final Handler mHandler = new Handler();
private final LayoutParams mProgressBarLayoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
private final LayoutParams mTipContentLayoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
}

更多相关文章

  1. android: 10秒钟完成一个progressbar的加载
  2. android 创建shortcut
  3. Android给图片添加认证水印
  4. Android(安卓)多级菜单
  5. android 实现图片加载效果
  6. Android(安卓)Wear创建通知的几种方式
  7. android 输入对话框
  8. Android(安卓)浏览网页
  9. Android菜单实例

随机推荐

  1. 摘抄代码没测试 发起程序的返回顺序以及
  2. 如何把应用安装到sd卡中
  3. 新增Android系统服务
  4. android最近老出现这样的问题: ADB server
  5. android中View坐标学习
  6. Flutter 在Android(安卓)Studio中找不到
  7. android拨打电话崩溃6.0以上实时动态权限
  8. UE4安卓打包报错及解决方案
  9. android 百度地图 AutoCompleteTextView
  10. jdk1.8签名apk