android listview下拉刷新!
来源:互联网 发布:淘宝管控记录能销吗 编辑:程序博客网 时间:2024/05/16 10:26
主要有四个状态;继承listivw;按下的状态;滑动的状态;松开的状态;开始默认状态;
package com.example.customview1406_mylistview;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MyListView extends ListView {
View viewHead;
int viewHeight;
final static int DONE = 1;
final static int PULL = 2;
final static int REALEASE = 3;
final static int REFRESHING = 4;
int currentState = -1;
int downY = 0;
TextView tvState, tvUpdateTime;
ImageView ivArror;
ProgressBar progressBar;
OnRefreshingListener onRefreshingListener;
public void setOnRefreshingListener(
OnRefreshingListener onRefreshingListener) {
this.onRefreshingListener = onRefreshingListener;
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
try {
currentState = DONE;
viewHead = View.inflate(context, R.layout.listview_header, null);
tvState = (TextView) viewHead.findViewById(R.id.tv_state);
tvUpdateTime = (TextView) viewHead.findViewById(R.id.tv_updateTime);
ivArror = (ImageView) viewHead.findViewById(R.id.iv_arrow);
progressBar = (ProgressBar) viewHead.findViewById(R.id.progressBar);
// 测量
viewHead.measure(0, 0);
viewHeight = viewHead.getMeasuredHeight();
this.addHeaderView(viewHead);
viewHead.setPadding(0, -viewHeight, 0, 0);
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
if (currentState == DONE) {
downY = (int) ev.getY();
currentState = PULL;
}
break;
case MotionEvent.ACTION_MOVE:
if (currentState == PULL) {
int currentY = (int) ev.getY();
int moveY = currentY - downY;
int top = moveY + -viewHeight;
viewHead.setPadding(0, top, 0, 0);
if (moveY > viewHeight) {
this.currentState = REALEASE;
this.tvState.setText("松开刷新");
}
}
break;
case MotionEvent.ACTION_UP:
if (this.currentState == REALEASE) {
// 刷新中
this.currentState = REFRESHING;
this.tvState.setText("刷新中");
this.ivArror.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
if (onRefreshingListener != null) {
onRefreshingListener.onRefresh();
}
}
break;
default:
break;
}
return super.onTouchEvent(ev);
}
interface OnRefreshingListener {
public void onRefresh();
}
public void completeRefresh() {
// TODO Auto-generated method stub
viewHead.setPadding(0, -viewHeight, 0, 0);
this.currentState = DONE;
}
}
java activity;代码
package com.example.customview1406_mylistview;
import java.util.ArrayList;
import com.example.customview1406_mylistview.MyListView.OnRefreshingListener;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
MyListView myListView;
MyListViewAdapter myListViewAdapter;
ArrayList<String> list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myListView = (MyListView) findViewById(R.id.myListView);
list.add("java");
list.add("android");
myListViewAdapter = new MyListViewAdapter(this, list);
myListView.setAdapter(myListViewAdapter);
myListView.setOnRefreshingListener(new OnRefreshingListener() {
@Override
public void onRefresh() {
new Thread() {
public void run() {
try {
this.sleep(2000);
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
list.add("联网得到的数据");
myListViewAdapter
.notifyDataSetChanged();
myListView.completeRefresh();
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
- Android ListView下拉刷新
- android Listview下拉刷新
- Android ListView下拉刷新
- Android-ListView 下拉刷新
- android listview下拉刷新!
- android listview下拉刷新
- Android ListView下拉刷新
- Android ListView 下拉刷新
- Android ListView下拉刷新
- android ListView下拉刷新
- android listview 下拉刷新功能
- Android Listview下拉刷新数据
- android中listView下拉刷新
- android listview 的下拉刷新
- android中listView下拉刷新
- android下拉刷新listView剖析
- Android下拉刷新ListView实现
- Android listView的下拉刷新
- @JsonView 简单介绍
- 为什么openwrt要使用Luci (lua + uci)
- PAT (Advanced Level) Practise 1011. World Cup Betting (20)
- 给mysql默认root用户设置密码
- Docker Serials 3: 安装应用
- android listview下拉刷新!
- 【PHP】php 二维关联数组的对某一个值排序
- sql性能
- Introduction to neural network —— C语言实现BP神经网络识别数字
- Linux IPC 参数设定,echo 80 > /proc/...
- 【v2.x OGE教程 15】 布局相关
- 随车吊吊机常见故障及解决办法
- 第21章 系统设定工具与硬件侦测
- 自动布局(autolayout)环境下图片编辑器的实现