@SuppressLint("HandlerLeak")
public class TestActivity extends Activity {
private Handler mHandler;
private PresentationModelChangeSupport changeSupport;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PresentationModel presentationModel = new PresentationModel(
TestActivity.this);
changeSupport = presentationModel.getPresentationModelChangeSupport();
ViewBinder viewBinder = createViewBinder();
View rootView = viewBinder.inflateAndBind(R.layout.activity_test,
presentationModel);
setContentView(rootView);
// 处理消息,更新UI
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x01:
changeSupport.firePropertyChange("http");
break;
default:
break;
}
}
};
}
private ViewBinder createViewBinder() {
BinderFactory reusableBinderFactory = new BinderFactoryBuilder()
.build();
return reusableBinderFactory.createViewBinder(this);
}
public Handler getHandler() {
return mHandler;
}
}
@org.robobinding.annotation.PresentationModel
public class PresentationModel implements HasPresentationModelChangeSupport {
private PresentationModelChangeSupport changeSupport;
private String result;
private TestActivity context;
public PresentationModel(TestActivity context) {
this.context = context;
changeSupport = new PresentationModelChangeSupport(this);
}
public String getHttp() {
return "网络数据:" + result;
}
public void httpRequest() {
changeSupport.firePropertyChange("http");
// 网络请求
myRequest();
}
public void myRequest() {
AsyncHttpClient client = new AsyncHttpClient();
String urlString = "http://apis.baidu.com/apistore/weatherservice/citylist";
client.get(urlString, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
result = response;
Log.e("网络请求成功", response);
//
Handler handler = context.getHandler();
if (handler != null) {
Message msg = handler.obtainMessage();
msg.what = 0x01;
handler.sendMessage(msg);
}
}
@Override
public void onFailure(Throwable arg0) {
Log.e("网络请求失败", "失败");
}
});
}
@Override
public PresentationModelChangeSupport getPresentationModelChangeSupport() {
return changeSupport;
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bind="http://robobinding.org/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:ignore="MissingPrefix" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
bind:text="{http}" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网络请求"
bind:onClick="httpRequest" />
</LinearLayout>