添加了上拉加载下拉刷新

This commit is contained in:
linglongxin24
2016-05-24 14:39:50 +08:00
parent 8bf98c660a
commit 832f82efb7
10 changed files with 284 additions and 225 deletions

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -7,7 +7,7 @@
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
<activity android:name=".MainActivity"> <activity android:name=".MainActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@@ -1,11 +1,23 @@
package com.kejiang.yuandl.sample; package com.kejiang.yuandl.sample;
import android.support.v7.app.AppCompatActivity; import android.widget.ListView;
import android.os.Bundle;
import com.kejiang.yuandl.adapter.common.ViewHolder;
import com.kejiang.yuandl.adapter.common.abslistview.CommonAdapter;
import com.kejiang.yuandl.base.BaseActivity; import com.kejiang.yuandl.base.BaseActivity;
import com.ldd.pullview.AbPullToRefreshView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends BaseActivity { public class MainActivity extends BaseActivity {
private AbPullToRefreshView pr;
private ListView listView;
private void assignViews() {
pr = (AbPullToRefreshView) findViewById(R.id.pr);
listView = (ListView) findViewById(R.id.listView);
}
@Override @Override
public void initTitleBar() { public void initTitleBar() {
@@ -15,13 +27,31 @@ public class MainActivity extends BaseActivity {
@Override @Override
public void initViews() { public void initViews() {
setContentView(R.layout.ac_main);
setContentView(R.layout.activity_main); assignViews();
} }
@Override @Override
public void initData() { public void initData() {
List<String> datas=new ArrayList<>();
listView.setAdapter(new CommonAdapter<String>(context,R.layout.item_text,datas){
@Override
public void convert(ViewHolder holder, String s) {
}
});
pr.setOnHeaderRefreshListener(new AbPullToRefreshView.OnHeaderRefreshListener() {
@Override
public void onHeaderRefresh(AbPullToRefreshView paramAbPullToRefreshView) {
}
});
pr.setOnFooterLoadListener(new AbPullToRefreshView.OnFooterLoadListener() {
@Override
public void onFooterLoad(AbPullToRefreshView paramAbPullToRefreshView) {
}
});
} }
@Override @Override

View File

@@ -6,11 +6,15 @@
android:paddingBottom="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin">
tools:context=".sample.MainActivity"> <com.ldd.pullview.AbPullToRefreshView
android:layout_width="match_parent"
android:id="@+id/pr"
android:layout_height="match_parent">
<TextView <ListView
android:layout_width="wrap_content" android:id="@+id/listView"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:text="Hello World!" /> android:layout_height="match_parent" />
</com.ldd.pullview.AbPullToRefreshView>
</RelativeLayout> </RelativeLayout>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
</LinearLayout>

Binary file not shown.

View File

@@ -70,7 +70,7 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
AppManager.getAppManager().addActivity(this); AppManager.getAppManager().addActivity(this);
setImmersionStatus(); // setImmersionStatus();
setupViews(); setupViews();
context = this; context = this;
initTitleBar(); initTitleBar();
@@ -372,216 +372,216 @@ public abstract class BaseActivity extends AutoLayoutActivity implements View.On
protected void startActivity(Class c) { protected void startActivity(Class c) {
startActivity(new Intent(context, c)); startActivity(new Intent(context, c));
} }
//
/** // /**
* 异步网络请求类 // * 异步网络请求类
* // *
* @param requestParams // * @param requestParams
*/ // */
protected void ajax(RequestParams requestParams) { // protected void ajax(RequestParams requestParams) {
if (!CheckNetwork.isNetworkAvailable(context)) { // if (!CheckNetwork.isNetworkAvailable(context)) {
showToast("网络不可用,请检查网络连接!"); // showToast("网络不可用,请检查网络连接!");
return; // return;
} // }
if (loadingDialog == null) { // if (loadingDialog == null) {
loadingDialog = new LoadingDialog(context); // loadingDialog = new LoadingDialog(context);
} // }
if (requestParams != null) { // if (requestParams != null) {
String uri = requestParams.getUri(); // String uri = requestParams.getUri();
if (!uri.isEmpty()) { // if (!uri.isEmpty()) {
String[] split = uri.split("/"); // String[] split = uri.split("/");
// Logger.d("split=" + Arrays.toString(split)); //// Logger.d("split=" + Arrays.toString(split));
//
String method = null; // String method = null;
try { // try {
method = split[split.length - 1].substring(0, split[split.length - 1].indexOf(".")); // method = split[split.length - 1].substring(0, split[split.length - 1].indexOf("."));
} catch (Exception e) { // } catch (Exception e) {
e.printStackTrace(); // e.printStackTrace();
Logger.d("请检查服务器地址后面是否含有.html"); // Logger.d("请检查服务器地址后面是否含有.html");
} // }
String mode = split[split.length - 2]; // String mode = split[split.length - 2];
String sign = MD5.md5(mode + method); // String sign = MD5.md5(mode + method);
requestParams.addBodyParameter("sign", sign); // requestParams.addBodyParameter("sign", sign);
} // }
//
} // }
Logger.d("url=" + requestParams.getUri() + "\nrequestParams=" + requestParams.getStringParams().toString()); // Logger.d("url=" + requestParams.getUri() + "\nrequestParams=" + requestParams.getStringParams().toString());
List<KeyValue> params = requestParams.getStringParams(); // List<KeyValue> params = requestParams.getStringParams();
for (KeyValue keyValue : params) { // for (KeyValue keyValue : params) {
if (keyValue.key.contains(":")) { // if (keyValue.key.contains(":")) {
throw new RuntimeException("参数异常!"); // throw new RuntimeException("参数异常!");
} // }
} // }
// jsonBean = JSON.parseObject(result, JsonBean.class); // // jsonBean = JSON.parseObject(result, JsonBean.class);
cancelable = x.http().post(requestParams, new Callback.ProgressCallback<String>() { // cancelable = x.http().post(requestParams, new Callback.ProgressCallback<String>() {
//
@Override // @Override
public void onWaiting() { // public void onWaiting() {
} // }
//
@Override // @Override
//
public void onStarted() { // public void onStarted() {
netOnStart(); // netOnStart();
} // }
//
@Override // @Override
public void onLoading(long total, long current, boolean isDownloading) { // public void onLoading(long total, long current, boolean isDownloading) {
netOnLoading(total, current, isDownloading); // netOnLoading(total, current, isDownloading);
} // }
//
@Override // @Override
public void onSuccess(String result) { // public void onSuccess(String result) {
//
Logger.json(result); // Logger.json(result);
JsonBean jsonBean = null; // JsonBean jsonBean = null;
try { // try {
// jsonBean = JSON.parseObject(result, JsonBean.class); //// jsonBean = JSON.parseObject(result, JsonBean.class);
jsonBean = jsonParse(result); // jsonBean = jsonParse(result);
if (jsonBean.getMsg() != null && !jsonBean.getMsg().isEmpty()) { // if (jsonBean.getMsg() != null && !jsonBean.getMsg().isEmpty()) {
showToast(jsonBean.getMsg()); // showToast(jsonBean.getMsg());
} // }
if (jsonBean.getCode() == 200) { // if (jsonBean.getCode() == 200) {
Map<String, Object> data = new ArrayMap<String, Object>(); // Map<String, Object> data = new ArrayMap<String, Object>();
if (null != jsonBean.getData() && jsonBean.getData().size() > 0) { // if (null != jsonBean.getData() && jsonBean.getData().size() > 0) {
data = jsonBean.getData(); // data = jsonBean.getData();
} // }
netOnSuccess(data); // netOnSuccess(data);
} else { // } else {
//
netOnOtherStates(jsonBean.getCode(), jsonBean.getMsg()); // netOnOtherStates(jsonBean.getCode(), jsonBean.getMsg());
} // }
} catch (Exception e) { // } catch (Exception e) {
if (loadingDialog != null && loadingDialog.isShowing()) { // if (loadingDialog != null && loadingDialog.isShowing()) {
loadingDialog.dismiss(); // loadingDialog.dismiss();
} // }
Logger.d(result); // Logger.d(result);
showToast("服务器异常!"); // showToast("服务器异常!");
e.printStackTrace(); // e.printStackTrace();
} finally { // } finally {
} // }
} // }
//
@Override // @Override
public void onError(Throwable ex, boolean isOnCallback) { // public void onError(Throwable ex, boolean isOnCallback) {
netOnFailure(ex); // netOnFailure(ex);
//
} // }
//
@Override // @Override
public void onCancelled(CancelledException cex) { // public void onCancelled(CancelledException cex) {
Logger.d("用户取消了访问网络...."); // Logger.d("用户取消了访问网络....");
netOnCancelled(); // netOnCancelled();
} // }
//
@Override // @Override
public void onFinished() { // public void onFinished() {
netOnFinish(); // netOnFinish();
} // }
//
}); // });
} // }
//
//
private JsonBean jsonParse(String json) throws JSONException { // private JsonBean jsonParse(String json) throws JSONException {
ArrayMap<String,Object> arrayMap= JSON.parseObject(json,new TypeReference<ArrayMap<String,Object>>(){ // ArrayMap<String,Object> arrayMap= JSON.parseObject(json,new TypeReference<ArrayMap<String,Object>>(){
}.getType()); // }.getType());
JsonBean jsonBean = new JsonBean(); // JsonBean jsonBean = new JsonBean();
if (arrayMap.containsKey("data")) { // if (arrayMap.containsKey("data")) {
Object data = arrayMap.get("data"); // Object data = arrayMap.get("data");
System.out.println("data.getClass().getName()=" + data.getClass().getName()); // System.out.println("data.getClass().getName()=" + data.getClass().getName());
ArrayMap<String,Object> rrData = null; // ArrayMap<String,Object> rrData = null;
if (data instanceof String) { // if (data instanceof String) {
System.out.println("data instanceof String"); // System.out.println("data instanceof String");
rrData = new ArrayMap<String,Object>(); // rrData = new ArrayMap<String,Object>();
rrData.put("data", data.toString()); // rrData.put("data", data.toString());
} else if (data instanceof JSONArray) { // } else if (data instanceof JSONArray) {
System.out.println("data instanceof JSONArray"); // System.out.println("data instanceof JSONArray");
rrData = new ArrayMap<String,Object>(); // rrData = new ArrayMap<String,Object>();
rrData.put("data", data); // rrData.put("data", data);
} else if (data instanceof com.alibaba.fastjson.JSONObject) { // } else if (data instanceof com.alibaba.fastjson.JSONObject) {
System.out.println("data instanceof JSONObject"); // System.out.println("data instanceof JSONObject");
rrData = JSON.parseObject(data.toString(),new TypeReference<ArrayMap<String,Object>>(){ // rrData = JSON.parseObject(data.toString(),new TypeReference<ArrayMap<String,Object>>(){
}.getType()); // }.getType());
} // }
jsonBean.setData(rrData); // jsonBean.setData(rrData);
} // }
jsonBean.setCode(Integer.valueOf(arrayMap.get("code").toString())); // jsonBean.setCode(Integer.valueOf(arrayMap.get("code").toString()));
jsonBean.setMsg(Tools.getValue(arrayMap, "msg")); // jsonBean.setMsg(Tools.getValue(arrayMap, "msg"));
//
return jsonBean; // return jsonBean;
} // }
//
//
/** // /**
* 开始访问网络 // * 开始访问网络
*/ // */
public void netOnStart() { // public void netOnStart() {
loadingDialog.show("正在获取数据..."); // loadingDialog.show("正在获取数据...");
} // }
//
/** // /**
* 访问网络的进程 // * 访问网络的进程
*/ // */
public void netOnLoading(long total, long current, boolean isUploading) { // public void netOnLoading(long total, long current, boolean isUploading) {
} // }
//
/** // /**
* 访问网络成功 // * 访问网络成功
*/ // */
public void netOnSuccess(Map<String, Object> data) { // public void netOnSuccess(Map<String, Object> data) {
if (loadingDialog != null) { // if (loadingDialog != null) {
loadingDialog.dismiss(); // loadingDialog.dismiss();
} // }
} // }
//
/** // /**
* 访问网络成功的其他状态 // * 访问网络成功的其他状态
*/ // */
public void netOnOtherStates(int code, String msg) { // public void netOnOtherStates(int code, String msg) {
if (loadingDialog != null) { // if (loadingDialog != null) {
loadingDialog.dismiss(); // loadingDialog.dismiss();
} // }
} // }
//
/** // /**
* 访问网络结束 // * 访问网络结束
*/ // */
public void netOnFinish() { // public void netOnFinish() {
loadingDialog.dismiss(); // loadingDialog.dismiss();
} // }
//
/** // /**
* 访问网络失败 // * 访问网络失败
*/ // */
public void netOnFailure(Throwable ex) { // public void netOnFailure(Throwable ex) {
if (loadingDialog != null) { // if (loadingDialog != null) {
loadingDialog.dismiss(); // loadingDialog.dismiss();
} // }
Logger.d(ex.getMessage()); // Logger.d(ex.getMessage());
if (ex instanceof HttpException) { // 网络错误 // if (ex instanceof HttpException) { // 网络错误
HttpException httpEx = (HttpException) ex; // HttpException httpEx = (HttpException) ex;
int responseCode = httpEx.getCode(); // int responseCode = httpEx.getCode();
String responseMsg = httpEx.getMessage(); // String responseMsg = httpEx.getMessage();
String errorResult = httpEx.getResult(); // String errorResult = httpEx.getResult();
Toast.makeText(x.app(), "网络错误:" + ex.getMessage(), Toast.LENGTH_LONG).show(); // Toast.makeText(x.app(), "网络错误:" + ex.getMessage(), Toast.LENGTH_LONG).show();
// ... // // ...
} else { // 其他错误 // } else { // 其他错误
Toast.makeText(context, "连接服务器失败请稍后再试ex=" + ex.getMessage(), Toast.LENGTH_SHORT).show(); // Toast.makeText(context, "连接服务器失败请稍后再试ex=" + ex.getMessage(), Toast.LENGTH_SHORT).show();
// ... // // ...
} // }
//
//
} // }
//
/** // /**
* 取消访问网络 // * 取消访问网络
*/ // */
public void netOnCancelled() { // public void netOnCancelled() {
if (loadingDialog != null) { // if (loadingDialog != null) {
loadingDialog.dismiss(); // loadingDialog.dismiss();
} // }
} // }
@Override @Override
public void onBackPressed() { public void onBackPressed() {

View File

@@ -1,9 +1,12 @@
package com.kejiang.yuandl.base; package com.kejiang.yuandl.base;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.util.ArrayMap; import android.support.v4.util.ArrayMap;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ListView; import android.widget.ListView;
@@ -39,6 +42,12 @@ import java.util.Map;
* 描述主要干什么 * 描述主要干什么
*/ */
public class BaseFragment extends Fragment { public class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
private Callback.Cancelable cancelable; private Callback.Cancelable cancelable;
/** /**
* 加载数据对话框 * 加载数据对话框

View File

@@ -3,9 +3,8 @@
style="@style/immersion_status" style="@style/immersion_status"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#af895b" android:background="#FFFFFF"
android:id="@+id/llRoot" android:id="@+id/llRoot"
android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<!-- Title --> <!-- Title -->

View File

@@ -2,7 +2,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_titlebar" android:id="@+id/layout_titlebar"
android:orientation="horizontal" android:orientation="horizontal"
style="@style/immersion_status"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="152px" android:layout_height="152px"