package com.lzy.demo.base;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.lzy.demo.R;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Set;
import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.Response;
public abstract class BaseDetailActivity extends BaseActivity {
protected ActionBar actionBar;
protected TextView requestState;
protected TextView requestHeaders;
protected TextView responseData;
protected TextView responseHeader;
protected FrameLayout rootContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
getDelegate().setContentView(R.layout.activity_base);
Window window = getWindow();
requestState = (TextView) window.findViewById(R.id.requestState);
requestHeaders = (TextView) window.findViewById(R.id.requestHeaders);
responseData = (TextView) window.findViewById(R.id.responseData);
responseHeader = (TextView) window.findViewById(R.id.responseHeader);
rootContent = (FrameLayout) window.findViewById(R.id.content);
onActivityCreate(savedInstanceState);
}
protected abstract void onActivityCreate(Bundle savedInstanceState);
@Override
public void setTitle(CharSequence title) {
if (actionBar != null) actionBar.setTitle(title);
}
@Override
public void setTitle(int titleId) {
if (actionBar != null) actionBar.setTitle(titleId);
}
@Override
public View findViewById(int id) {
return rootContent.findViewById(id);
}
private void clearContentView() {
rootContent.removeAllViews();
}
@Override
public void setContentView(int layoutResID) {
clearContentView();
getLayoutInflater().inflate(layoutResID, rootContent, true);
}
@Override
public void setContentView(View view) {
clearContentView();
rootContent.addView(view);
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
clearContentView();
rootContent.addView(view, params);
}
protected <T> void handleResponse(T data, Call call, Response response) {
StringBuilder sb;
if (call != null) {
requestState.setText("请求成功 请求方式:" + call.request().method() + "\n" + "url:" + call.request().url());
Headers requestHeadersString = call.request().headers();
Set<String> requestNames = requestHeadersString.names();
sb = new StringBuilder();
for (String name : requestNames) {
sb.append(name).append(" : ").append(requestHeadersString.get(name)).append("\n");
}
requestHeaders.setText(sb.toString());
} else {
requestState.setText("--");
requestHeaders.setText("--");
}
if (data == null) {
responseData.setText("--");
} else {
if (data instanceof String) {
responseData.setText((String) data);
} else if (data instanceof List) {
sb = new StringBuilder();
List list = (List) data;
for (Object obj : list) {
sb.append(obj.toString()).append("\n");
}
responseData.setText(sb.toString());
} else if (data instanceof Set) {
sb = new StringBuilder();
Set set = (Set) data;
for (Object obj : set) {
sb.append(obj.toString()).append("\n");
}
responseData.setText(sb.toString());
} else if (data instanceof Map) {
sb = new StringBuilder();
Map map = (Map) data;
Set keySet = map.keySet();
for (Object key : keySet) {
sb.append(key.toString()).append(" : ").append(map.get(key)).append("\n");
}
responseData.setText(sb.toString());
} else if (data instanceof File) {
File file = (File) data;
responseData.setText("数据内容即为文件内容\n下载文件路径:" + file.getAbsolutePath());
} else if (data instanceof Bitmap) {
responseData.setText("图片的内容即为数据");
} else {
responseData.setText(data.toString());
}
}
if (response != null) {
Headers responseHeadersString = response.headers();
Set<String> names = responseHeadersString.names();
sb = new StringBuilder();
sb.append("url : ").append(response.request().url()).append("\n\n");
sb.append("stateCode : ").append(response.code()).append("\n");
for (String name : names) {
sb.append(name).append(" : ").append(responseHeadersString.get(name)).append("\n");
}
responseHeader.setText(sb.toString());
} else {
responseHeader.setText("--");
}
}
protected void handleError(Call call, Response response) {
StringBuilder sb;
if (call != null) {
requestState.setText("请求失败 请求方式:" + call.request().method() + "\n" + "url:" + call.request().url());
Headers requestHeadersString = call.request().headers();
Set<String> requestNames = requestHeadersString.names();
sb = new StringBuilder();
for (String name : requestNames) {
sb.append(name).append(" : ").append(requestHeadersString.get(name)).append("\n");
}
requestHeaders.setText(sb.toString());
} else {
requestState.setText("--");
requestHeaders.setText("--");
}
responseData.setText("--");
if (response != null) {
Headers responseHeadersString = response.headers();
Set<String> names = responseHeadersString.names();
sb = new StringBuilder();
sb.append("stateCode : ").append(response.code()).append("\n");
for (String name : names) {
sb.append(name).append(" : ").append(responseHeadersString.get(name)).append("\n");
}
responseHeader.setText(sb.toString());
} else {
responseHeader.setText("--");
}
}
}