현재 웹 서버 "A"의 데이터를 Lazy Adapter를 사용하는 Listview로 구문 분석하고 있습니다. 각 행에는 버튼을 선택하면 별도의 AsyncTask 클래스를 사용하여 해당 행의 데이터를 웹 서버 "B"로 보냅니다. onTaskComplete를 사용하여 asynctask에서 콜백을 사용하여 활동을 업데이트하고 있습니다. 잘 작동하는, 나는 서버에서 올바른 응답을 얻을.비동기 작업 목록보기 업데이트 후 버튼보기
제 질문은 어떻게 서버의 응답에 따라 단추 이미지를 업데이트합니까? 예를 들어, 서버의 응답이 1이면 응답을 0으로하는 경우 버튼 이미지를 업데이트하고 버튼 이미지는 변경하지 마십시오. 나는 버튼 이미지를 업데이트하기 위해 액티비티의 응답을 어댑터로 전달하는 방법을 모르겠다. 어떤 조언을 주시면 감사하겠습니다.
MY CODE :
어댑터 :
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
RowHolder holder = null;
if (convertView == null) {
vi = inflater.inflate(R.layout.group_view, null);
holder = new RowHolder();
holder.a_refid = (TextView) vi.findViewById(R.id.a_refid);
holder.a_a_name = (TextView) vi.findViewById(R.id.a_name);
holder.a_location = (TextView) vi.findViewById(R.id.a_location);
holder.checkin = (ImageView) vi.findViewById(R.id.a_checkin);
vi.setTag(holder);
} else {
holder = (RowHolder) vi.getTag();
}
HashMap<String, String> locList;
locList = data.get(position);
holder.a_refid.setText(locList.get(MainActivity.KEY_REFID));
holder.a_name.setText(locList.get(MainActivity.KEY_NAME));
holder.a_location.setText(locList.get(MainActivity.KEY_LOCATION));
HashMap<String, String> details = dbh.getUserDetails();
final String useruid = details.get("uid");
Log.d("UID", useruid);
final HashMap<String, String> finallocList = locList;
holder.a_refid.setTag(finallocList.get(MainActivity.KEY_REFID));
holder.a_name.setTag(finallocList.get(MainActivity.KEY_REFID));
holder.a_location.setTag(finallocList.get(MainActivity.KEY_REFID));
//Check In Button
holder.checkin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Check-in to: " + finallocList.get(MainActivity.KEY_NAME));
builder.setItems(new CharSequence[]{"Check-In", "Anonymous Check-In",
"Cancel"},
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
switch (which) {
case 0:
new
AcheckPro(activity).execute(finallocList.get(MainActivity.KEY_REFID), useruid,
finallocList.get(MainActivity.KEY_NAME),
finallocList.get(MainActivity.KEY_NAME));
Log.d("Check In Process", String.valueOf(useruid));
break;
case 1:
Toast.makeText(activity, "button 2 clicked",
Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(activity, "button 3 clicked",
Toast.LENGTH_SHORT).show();
break;
}
}
});
builder.create().show();
}
});
return vi;
}
AsyncTask를 클래스 당신은 단순히이 논리하여이 작업을 수행 할 수 있습니다
public class AcheckPro extends AsyncTask<String, Void, JSONObject> {
private Activity activity;
private ProgressDialog dialog;
private AsyncTaskCompleteListener callback;
public AcheckPro(Activity act) {
this.activity = act;
this.callback = (AsyncTaskCompleteListener)act;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(activity);
dialog.setMessage("Loading...");
dialog.show();
}
@Override
protected JSONObject doInBackground(String... params) {
String refid = params[0];
String uid = params[1];
String name = params[2];
String location = params[3];
JFunctions jFunctions = new JFunctions();
JSONObject json = userFunction.checkInUser(refid, uid, name, location);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
super.onPostExecute(json);
if (null != dialog && dialog.isShowing()) {
dialog.dismiss();
}
Log.d("JSON Object", String.valueOf(json));
callback.onTaskComplete(json);
}
}
서버에서 데이터를 가져올 때 작성한 코드를 공유 할 수 있습니까? – PsyGik
@Carbongixxer 코드 공유 ... – nitesh
@PsyGik 코드 추가 – Carbongixxer