Android 自定义对话框,进度条,下拉刷新等
2015-11-08 09:24
501 查看
这个demo集合了自定义对话框,进度条,下拉刷新以及popup弹出框等。是学习了网上开源项目后,抽取集合了常用对话框,进度条,下拉刷新以及popup弹出框等。现在结构目录简单,更易于学习和扩展使用。注释都卸载代码。下面进行简单的介绍以及部分代码展示。
本文demo下载:点击
![](https://img-blog.csdn.net/20151108091018867?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151108091059522?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这上面项目结构图也是一目了然,有什么功能展示。大家也看到了,这上面类有点多,如果全部贴出来,不大可能,有兴趣下载本文源码。
package com.org.base;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.example.activity.R;
import com.example.activity.R.layout;
import com.org.dialog.LoadingDialog;
import com.org.view.HandyTextView;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
public class BaseActivity extends Activity {
protected LoadingDialog mLoadingDialog;
/**
* 屏幕的宽度、高度、密度
*/
protected int mScreenWidth;
protected int mScreenHeight;
protected float mDensity;
//异步加载任务的list
protected List<AsyncTask<Void, Void, Boolean>> mAsyncTasks = new ArrayList<AsyncTask<Void, Void, Boolean>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLoadingDialog = new LoadingDialog(this, "请求提交中");
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
mScreenWidth = metric.widthPixels;
mScreenHeight = metric.heightPixels;
mDensity = metric.density;
}
protected void putAsyncTask(AsyncTask<Void, Void, Boolean> asyncTask) {
mAsyncTasks.add(asyncTask.execute());
}
protected void clearAsyncTask() {
Iterator<AsyncTask<Void, Void, Boolean>> iterator = mAsyncTasks
.iterator();
while (iterator.hasNext()) {
AsyncTask<Void, Void, Boolean> asyncTask = iterator.next();
if (asyncTask != null && !asyncTask.isCancelled()) {
asyncTask.cancel(true);
}
}
mAsyncTasks.clear();
}
protected void showLoadingDialog(String text) {
if (text != null) {
mLoadingDialog.setText(text);
}
mLoadingDialog.show();
}
protected void dismissLoadingDialog() {
if (mLoadingDialog.isShowing()) {
mLoadingDialog.dismiss();
}
}
/** 短暂显示Toast提示(来自res) **/
protected void showShortToast(int resId) {
Toast.makeText(this, getString(resId), Toast.LENGTH_SHORT).show();
}
/** 短暂显示Toast提示(来自String) **/
protected void showShortToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
/** 长时间显示Toast提示(来自res) **/
protected void showLongToast(int resId) {
Toast.makeText(this, getString(resId), Toast.LENGTH_LONG).show();
}
/** 长时间显示Toast提示(来自String) **/
protected void showLongToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
}
/** 显示自定义Toast提示(来自res) **/
protected void showCustomToast(int resId) {
View toastRoot = LayoutInflater.from(BaseActivity.this).inflate(
R.layout.common_toast, null);
((HandyTextView) toastRoot.findViewById(R.id.toast_text))
.setText(getString(resId));
Toast toast = new Toast(BaseActivity.this);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(toastRoot);
toast.show();
}
/** 显示自定义Toast提示(来自String) **/
protected void showCustomToast(String text) {
View toastRoot = LayoutInflater.from(BaseActivity.this).inflate(
R.layout.common_toast, null);
((HandyTextView) toastRoot.findViewById(R.id.toast_text)).setText(text);
Toast toast = new Toast(BaseActivity.this);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(toastRoot);
toast.show();
}
/** Debug输出Log日志 **/
protected void showLogDebug(String tag, String msg) {
Log.d(tag, msg);
}
/** Error输出Log日志 **/
protected void showLogError(String tag, String msg) {
Log.e(tag, msg);
}
/** 通过Class跳转界面 **/
protected void startActivity(Class<?> cls) {
startActivity(cls, null);
}
/** 含有Bundle通过Class跳转界面 **/
protected void startActivity(Class<?> cls, Bundle bundle) {
Intent intent = new Intent();
intent.setClass(this, cls);
if (bundle != null) {
intent.putExtras(bundle);
}
startActivity(intent);
}
/** 默认退出 **/
protected void defaultFinish() {
super.finish();
}
}
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.PopupWindow;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public abstract class BasePopupWindow extends PopupWindow {
protected View mContentView;
protected onSubmitClickListener mOnSubmitClickListener;
public BasePopupWindow() {
super();
}
public BasePopupWindow(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public BasePopupWindow(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public BasePopupWindow(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BasePopupWindow(Context context) {
super(context);
}
public BasePopupWindow(int width, int height) {
super(width, height);
}
public BasePopupWindow(View contentView, int width, int height,
boolean focusable) {
super(contentView, width, height, focusable);
}
public BasePopupWindow(View contentView) {
super(contentView);
}
@SuppressWarnings("deprecation")
public BasePopupWindow(View contentView, int width, int height) {
super(contentView, width, height, true);
mContentView = contentView;
setBackgroundDrawable(new BitmapDrawable());
initViews();
initEvents();
init();
}
public abstract void initViews();
public abstract void initEvents();
public abstract void init();
public View findViewById(int id) {
return mContentView.findViewById(id);
}
/**
* 显示在parent的上部并水平居中
*
* @param parent
*/
public void showViewTopCenter(View parent) {
showAtLocation(parent, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0);
}
/**
* 显示在parent的中心
*
* @param parent
*/
public void showViewCenter(View parent) {
showAtLocation(parent, Gravity.CENTER, 0, 0);
}
/**
* 添加确认单击监听
*
* @param l
*/
public void setOnSubmitClickListener(onSubmitClickListener l) {
mOnSubmitClickListener = l;
}
public interface onSubmitClickListener {
void onClick();
}
}
import com.org.base.BaseActivity;
import com.org.dialog.EditTextDialog;
import com.org.dialog.SimpleListDialog;
import com.org.dialog.SimpleListDialog.onSimpleListItemClickListener;
import com.org.popupwindow.ChatPopupWindow;
import com.org.popupwindow.ChatPopupWindow.onChatPopupItemClickListener;
import com.viw.adapt.CheckListDialogAdapter;
import android.R.layout;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends BaseActivity
implements
OnClickListener,
onChatPopupItemClickListener{
protected SimpleListDialog mDialog;
private int mCheckId = 0;
private ChatPopupWindow mChatPopupWindow;
private int mWidth;
private int mHeaderHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
findViewById(R.id.button3).setOnClickListener(this);
findViewById(R.id.button4).setOnClickListener(this);
findViewById(R.id.button5).setOnClickListener(this);
initPopupWindow();
}
public void onSimpleListItem() {
String[] modes = new String[]{"测试一","测试二","测试三"};
mDialog = new SimpleListDialog(this);
mDialog.setTitle("单选框");
mDialog.setTitleLineVisibility(View.GONE);
mDialog.setAdapter(new CheckListDialogAdapter(mCheckId, this, modes));
//用匿名内部类实现接口监听
mDialog.setOnSimpleListItemClickListener(new DialogItemClickListener());
mDialog.show();
}
protected class DialogItemClickListener implements
onSimpleListItemClickListener {
@Override
public void onItemClick(int position) {
mCheckId = position;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
showLoadingDialog("正在加载。。。");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
dismissLoadingDialog();
}
}, 10000);
break;
case R.id.button2:
onSimpleListItem();
break;
case R.id.button3:
onEditTextDialog();
break;
case R.id.button4:
RelativeLayout layoutShow = (RelativeLayout)findViewById(R.id.layoutShow);
mChatPopupWindow.showAtLocation(layoutShow, Gravity.RIGHT
| Gravity.TOP, -10, mHeaderHeight + 10);
break;
case R.id.button5:
startActivity(PullRefreshListViewActivity.class);
break;
default:
break;
}
}
private void onEditTextDialog() {
final EditTextDialog mEditTextDialog = new EditTextDialog(this);
mEditTextDialog.setTitle("填写推荐人");
mEditTextDialog.setButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mEditTextDialog.cancel();
}
}, "确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = mEditTextDialog.getText();
if (text == null) {
mEditTextDialog.requestFocus();
} else {
mEditTextDialog.dismiss();
}
}
});
mEditTextDialog.show();
}
//初始化PopupWindow
protected void initPopupWindow() {
mWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
130, getResources().getDisplayMetrics());
mHeaderHeight = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 48, getResources()
.getDisplayMetrics());
mChatPopupWindow = new ChatPopupWindow(this, mWidth,
LayoutParams.WRAP_CONTENT);
mChatPopupWindow.setOnChatPopupItemClickListener(this);
}
//以下是popupwindow的选择监听事件
@Override
public void onVoiceModeClick() {
showCustomToast("pop监听1");
}
@Override
public void onCreateClick() {
showCustomToast("pop监听2");
}
@Override
public void onSynchronousClick() {
showCustomToast("pop监听3");
}
}
本文demo下载:点击
本文demo下载:点击
1、整体实现的效果图
2、项目结构图
这上面项目结构图也是一目了然,有什么功能展示。大家也看到了,这上面类有点多,如果全部贴出来,不大可能,有兴趣下载本文源码。
3、看看基础类BaseActivity
我就贴一下基础类,还有实现类。因为这些一段段代码易于其他项目使用。package com.org.base;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.example.activity.R;
import com.example.activity.R.layout;
import com.org.dialog.LoadingDialog;
import com.org.view.HandyTextView;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
public class BaseActivity extends Activity {
protected LoadingDialog mLoadingDialog;
/**
* 屏幕的宽度、高度、密度
*/
protected int mScreenWidth;
protected int mScreenHeight;
protected float mDensity;
//异步加载任务的list
protected List<AsyncTask<Void, Void, Boolean>> mAsyncTasks = new ArrayList<AsyncTask<Void, Void, Boolean>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLoadingDialog = new LoadingDialog(this, "请求提交中");
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
mScreenWidth = metric.widthPixels;
mScreenHeight = metric.heightPixels;
mDensity = metric.density;
}
protected void putAsyncTask(AsyncTask<Void, Void, Boolean> asyncTask) {
mAsyncTasks.add(asyncTask.execute());
}
protected void clearAsyncTask() {
Iterator<AsyncTask<Void, Void, Boolean>> iterator = mAsyncTasks
.iterator();
while (iterator.hasNext()) {
AsyncTask<Void, Void, Boolean> asyncTask = iterator.next();
if (asyncTask != null && !asyncTask.isCancelled()) {
asyncTask.cancel(true);
}
}
mAsyncTasks.clear();
}
protected void showLoadingDialog(String text) {
if (text != null) {
mLoadingDialog.setText(text);
}
mLoadingDialog.show();
}
protected void dismissLoadingDialog() {
if (mLoadingDialog.isShowing()) {
mLoadingDialog.dismiss();
}
}
/** 短暂显示Toast提示(来自res) **/
protected void showShortToast(int resId) {
Toast.makeText(this, getString(resId), Toast.LENGTH_SHORT).show();
}
/** 短暂显示Toast提示(来自String) **/
protected void showShortToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
/** 长时间显示Toast提示(来自res) **/
protected void showLongToast(int resId) {
Toast.makeText(this, getString(resId), Toast.LENGTH_LONG).show();
}
/** 长时间显示Toast提示(来自String) **/
protected void showLongToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
}
/** 显示自定义Toast提示(来自res) **/
protected void showCustomToast(int resId) {
View toastRoot = LayoutInflater.from(BaseActivity.this).inflate(
R.layout.common_toast, null);
((HandyTextView) toastRoot.findViewById(R.id.toast_text))
.setText(getString(resId));
Toast toast = new Toast(BaseActivity.this);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(toastRoot);
toast.show();
}
/** 显示自定义Toast提示(来自String) **/
protected void showCustomToast(String text) {
View toastRoot = LayoutInflater.from(BaseActivity.this).inflate(
R.layout.common_toast, null);
((HandyTextView) toastRoot.findViewById(R.id.toast_text)).setText(text);
Toast toast = new Toast(BaseActivity.this);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(toastRoot);
toast.show();
}
/** Debug输出Log日志 **/
protected void showLogDebug(String tag, String msg) {
Log.d(tag, msg);
}
/** Error输出Log日志 **/
protected void showLogError(String tag, String msg) {
Log.e(tag, msg);
}
/** 通过Class跳转界面 **/
protected void startActivity(Class<?> cls) {
startActivity(cls, null);
}
/** 含有Bundle通过Class跳转界面 **/
protected void startActivity(Class<?> cls, Bundle bundle) {
Intent intent = new Intent();
intent.setClass(this, cls);
if (bundle != null) {
intent.putExtras(bundle);
}
startActivity(intent);
}
/** 默认退出 **/
protected void defaultFinish() {
super.finish();
}
}
4、BasePopupWindow
package com.org.base;import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Build;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.PopupWindow;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public abstract class BasePopupWindow extends PopupWindow {
protected View mContentView;
protected onSubmitClickListener mOnSubmitClickListener;
public BasePopupWindow() {
super();
}
public BasePopupWindow(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public BasePopupWindow(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public BasePopupWindow(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BasePopupWindow(Context context) {
super(context);
}
public BasePopupWindow(int width, int height) {
super(width, height);
}
public BasePopupWindow(View contentView, int width, int height,
boolean focusable) {
super(contentView, width, height, focusable);
}
public BasePopupWindow(View contentView) {
super(contentView);
}
@SuppressWarnings("deprecation")
public BasePopupWindow(View contentView, int width, int height) {
super(contentView, width, height, true);
mContentView = contentView;
setBackgroundDrawable(new BitmapDrawable());
initViews();
initEvents();
init();
}
public abstract void initViews();
public abstract void initEvents();
public abstract void init();
public View findViewById(int id) {
return mContentView.findViewById(id);
}
/**
* 显示在parent的上部并水平居中
*
* @param parent
*/
public void showViewTopCenter(View parent) {
showAtLocation(parent, Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0);
}
/**
* 显示在parent的中心
*
* @param parent
*/
public void showViewCenter(View parent) {
showAtLocation(parent, Gravity.CENTER, 0, 0);
}
/**
* 添加确认单击监听
*
* @param l
*/
public void setOnSubmitClickListener(onSubmitClickListener l) {
mOnSubmitClickListener = l;
}
public interface onSubmitClickListener {
void onClick();
}
}
5、BaseArrayListAdapter
package com.org.base; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; //基本的适配器 public class BaseArrayListAdapter extends BaseAdapter { protected Context mContext; protected LayoutInflater mInflater; protected List<String> mDatas = new ArrayList<String>(); //String数组添加数据源 public BaseArrayListAdapter(Context context, String... datas) { mContext = context; mInflater = LayoutInflater.from(context); if (datas != null && datas.length > 0) { mDatas = Arrays.asList(datas); } } //用list方式添加数据源 public BaseArrayListAdapter(Context context, List<String> datas) { mContext = context; mInflater = LayoutInflater.from(context); if (datas != null && datas.size() > 0) { mDatas = datas; } } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { return null; } }
6、实现自定义对话框,进度条以及popup弹出框,主MainActivity
package com.example.activity;import com.org.base.BaseActivity;
import com.org.dialog.EditTextDialog;
import com.org.dialog.SimpleListDialog;
import com.org.dialog.SimpleListDialog.onSimpleListItemClickListener;
import com.org.popupwindow.ChatPopupWindow;
import com.org.popupwindow.ChatPopupWindow.onChatPopupItemClickListener;
import com.viw.adapt.CheckListDialogAdapter;
import android.R.layout;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends BaseActivity
implements
OnClickListener,
onChatPopupItemClickListener{
protected SimpleListDialog mDialog;
private int mCheckId = 0;
private ChatPopupWindow mChatPopupWindow;
private int mWidth;
private int mHeaderHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
findViewById(R.id.button3).setOnClickListener(this);
findViewById(R.id.button4).setOnClickListener(this);
findViewById(R.id.button5).setOnClickListener(this);
initPopupWindow();
}
public void onSimpleListItem() {
String[] modes = new String[]{"测试一","测试二","测试三"};
mDialog = new SimpleListDialog(this);
mDialog.setTitle("单选框");
mDialog.setTitleLineVisibility(View.GONE);
mDialog.setAdapter(new CheckListDialogAdapter(mCheckId, this, modes));
//用匿名内部类实现接口监听
mDialog.setOnSimpleListItemClickListener(new DialogItemClickListener());
mDialog.show();
}
protected class DialogItemClickListener implements
onSimpleListItemClickListener {
@Override
public void onItemClick(int position) {
mCheckId = position;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
showLoadingDialog("正在加载。。。");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
dismissLoadingDialog();
}
}, 10000);
break;
case R.id.button2:
onSimpleListItem();
break;
case R.id.button3:
onEditTextDialog();
break;
case R.id.button4:
RelativeLayout layoutShow = (RelativeLayout)findViewById(R.id.layoutShow);
mChatPopupWindow.showAtLocation(layoutShow, Gravity.RIGHT
| Gravity.TOP, -10, mHeaderHeight + 10);
break;
case R.id.button5:
startActivity(PullRefreshListViewActivity.class);
break;
default:
break;
}
}
private void onEditTextDialog() {
final EditTextDialog mEditTextDialog = new EditTextDialog(this);
mEditTextDialog.setTitle("填写推荐人");
mEditTextDialog.setButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mEditTextDialog.cancel();
}
}, "确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = mEditTextDialog.getText();
if (text == null) {
mEditTextDialog.requestFocus();
} else {
mEditTextDialog.dismiss();
}
}
});
mEditTextDialog.show();
}
//初始化PopupWindow
protected void initPopupWindow() {
mWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
130, getResources().getDisplayMetrics());
mHeaderHeight = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 48, getResources()
.getDisplayMetrics());
mChatPopupWindow = new ChatPopupWindow(this, mWidth,
LayoutParams.WRAP_CONTENT);
mChatPopupWindow.setOnChatPopupItemClickListener(this);
}
//以下是popupwindow的选择监听事件
@Override
public void onVoiceModeClick() {
showCustomToast("pop监听1");
}
@Override
public void onCreateClick() {
showCustomToast("pop监听2");
}
@Override
public void onSynchronousClick() {
showCustomToast("pop监听3");
}
}
7、下拉刷新PullRefreshListViewActivity
package com.example.activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import com.org.base.BaseActivity; import com.org.view.PullRefreshListView; import com.org.view.PullRefreshListView.OnCancelListener; import com.org.view.PullRefreshListView.OnRefreshListener; import com.viw.adapt.CheckListDialogAdapter; public class PullRefreshListViewActivity extends BaseActivity implements OnRefreshListener, OnCancelListener, OnItemClickListener{ private PullRefreshListView mRefreshListView; String[] modes = new String[]{"测试一","测试二","测试三"}; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_refresh); initViews(); } protected void initViews() { mRefreshListView = (PullRefreshListView) findViewById(R.id.otherfeedlist_mmrlv_list); //适配器我随便用了一个 mRefreshListView.setAdapter(new CheckListDialogAdapter(1, this, modes)); mRefreshListView.setOnItemClickListener(this); mRefreshListView.setOnRefreshListener(this); mRefreshListView.setOnCancelListener(this); } @Override public void onCancel() { //取消刷新 mRefreshListView.onRefreshComplete(); } @Override public void onRefresh() { //异步加载线程 putAsyncTask(new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { try { Thread.sleep(2000); } catch (InterruptedException e) { } return null; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); //这里写刷新adapt数据就行可以了 mRefreshListView.onRefreshComplete(); } }); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // listview的单击事件就不写了 } }
本文demo下载:点击
相关文章推荐
- Android中实现Bitmap在自定义View中的放大与拖动
- Android开发环境搭建总结
- 通过硬件层提高Android动画的性能
- Android 动态加载之DexClassLoader
- Android自定义Adapter的ListView的思路及代码
- android周报176期
- android周报177期知识点梳理
- Android Studio 个性化设置
- Android学习笔记(十四)方便实用的首选项-PreferenceActivity
- Android读书笔记----滑动冲突的解决方式
- Android 6.0 Changes
- Android之如何解决Listview里面的值出现了2次
- android快速开发系列
- Android换肤系列
- 简单几步Android下双击事件的实现
- 无法inflate android.support.v4.view.ViewPager的问题
- Android之JNI(浅谈)
- Android的GridView点击图片变暗效果
- android studio设置自动导入
- Android开发实例之登录界面的实现