안녕하세요. 안드로이드 초보 개발자입니다.
코딩을 하면서 질문이 생겨서 글을 남깁니다.
1. Button같은 것들을 전역으로 만드는 것과 사용할때마다 findViewById를 이용하는 것 중 어떤 것이 더 좋은가요?(효율적으로)
2. Webservice로 서비스 호출할 때 반드시 Asynctask를 이용해야하나요? (기존에 이용하지 않길래 그 상태에서 좀 바꿨더니 어떤 에러가 뜨길래.. 검색해보니 AsyncTask를 이용하면 해결이 된다고 하더라구요..) AsyncTask말고 좀 더 간결하게 접근할 방법이 있을까요? (모든 클래스 내에 또 클래스를 만들려 하니 좋은지를 잘 모르겠습니다... (제가 바꾼 소스에서는 AlertDialog 내에서 AsyncTask를 이용하였습니다.)
2번에 관한 현 소스입니다.
private void AlertDialogList(String alertNm, final String alertId, CharSequence charDept) {
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_HOLO_DARK);
builder.setTitle(alertNm).setCancelable(true).setAdapter(setAdapter(alertId, charDept),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int position) {
try {
topBar_dialog_flg = true;
if(alertId.equals("firstLab")){
String exrm_nm = ((JSONObject)labList.get(position)).getString("EXRM_NM");
((Button)findViewById(R.id.btnFirstLab)).setText(exrm_nm);
firstTabCode = ((JSONObject)labList.get(position)).getString("EXRM_TP_CD");
secondTabCode="";
((Button)findViewById(R.id.btnSecondLab)).setText("검사실 전체");
}else if(alertId.equals("secondLab")){
String exrm_nm = ((JSONObject)labList.get(position)).getString("EXRM_NM");
((Button)findViewById(R.id.btnSecondLab)).setText(exrm_nm);
secondTabCode = ((JSONObject)labList.get(position)).getString("EXRM_TP_CD");
}
} catch (Exception e) {
showToast(e.getMessage());
}
}
});
}
private AlertdialogAdapter setAdapter(String alertId, CharSequence charDept) {
AsyncTaskAlertDialog asyncTaskAlertDialog = new AsyncTaskAlertDialog();
try {
labList = new JSONArray(asyncTaskAlertDialog.execute(alertId).get().toString());
} catch (Exception e) {
showToast(e.getMessage());
}
return new AlertdialogAdapter(this, R.layout.alertdialog_list_layout, labList, "EXRM_NM","EXRM_TP_CD");
}
private class AsyncTaskAlertDialog extends AsyncTask<Object, Object, Object>{
@Override
protected Object doInBackground(Object... params) {
~~~~
}
}