Last active
August 29, 2015 14:22
-
-
Save r17171709/fc118a7a40651ebe4c91 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//定义泛型接口 | |
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