我是 C# 程序员,对 Android 编程很陌生。
如果出现以下代码,有什么重构的建议吗?侦听器内部的许多侦听器难以重构。
在 C# 中,async/await
可以从中获取返回值,HttpClient
以便我可以将 json 通信与逻辑代码隔离开来。
但据我所知,androidlistener
需要final
关键字才能将结果发送到其范围之外,并且final
在 http 通信后无法接受值(我使用loopj httpclient)。
请注意,我的应用程序最低要求是 API 版本 8。
// A delete button to remove a post.
buttonDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Show dialog to ask to delete.
Dialog.ShowMessageDialog(PostViewActivity.this, getString(R.string.dialogDeletePost), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// Async http DELETE send.
MainActivity.HttpClient.delete(ServerUrl.QUESTION.toString() + "/" + id, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String s) {
// when result received, close current activity.
super.onSuccess(s);
setResult(RESULT_OK);
QuestionViewActivity.this.finish();
}
@Override
public void onFailure(Throwable throwable, String s) {
super.onFailure(throwable, s);
}
});
}
});
}
});
// show yes-no dialog
public void ShowMessageDialog(Context context, String message, DialogInterface.OnClickListener onYesClickListener){
new AlertDialog.Builder(context)
.setMessage(message)
.setCancelable(false)
.setPositiveButton(R.string.yes, onYesClickListener)
.setNegativeButton(R.string.cancel, null)
.show();
}