Skip to content

Instantly share code, notes, and snippets.

@r17171709
Last active August 29, 2015 14:22
Show Gist options
  • Save r17171709/fc118a7a40651ebe4c91 to your computer and use it in GitHub Desktop.
Save r17171709/fc118a7a40651ebe4c91 to your computer and use it in GitHub Desktop.
//定义泛型接口
public interface HttpCallBack<T> {
public void onSuccess(T result);
public void onFail(Throwable throwable);
}
//定义父类子类model
public class ChildModel extends ParentModel {
String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
public class ParentModel {
int statue;
String message;
public int getStatue() {
return statue;
}
public void setStatue(int statue) {
this.statue = statue;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
//定义接口与模型交互对象
public class MData<T> {
public T model;
public ArrayList<T> models;
public T getModel() {
return model;
}
public void setModel(T model) {
this.model = model;
}
public ArrayList<T> getModels() {
return models;
}
public void setModels(ArrayList<T> models) {
this.models = models;
}
}
//具体实现
public void getHttpData(final HttpCallBack<MData<? extends ParentModel>> callBack) {
final Handler handler=new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==1) {
ChildModel model=new ChildModel();
model.setStatue(1);
model.setMessage("ok");
model.setResult("1234567");
MData<ChildModel> mData=new MData<ChildModel>();
mData.setModel(model);
callBack.onSuccess(mData);
}
else {
callBack.onFail(new RuntimeException("请求异常"));
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
Message message=new Message();
//模拟http耗时
try {
message.what=1;
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
message.what=0;
}
handler.sendMessage(message);
}
}).start();
}
//使用
getHttpData(new HttpCallBack<MData<? extends ParentModel>>() {
@Override
public void onSuccess(MData<? extends ParentModel> result) {
ChildModel model= (ChildModel) result.getModel();
Toast.makeText(MainActivity.this, model.getResult(), Toast.LENGTH_LONG).show();
}
@Override
public void onFail(Throwable throwable) {
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment