В настоящее время я разбираю данные с веб-сервера «A» в Listview с помощью Lazy Adapter. Каждая строка имеет кнопку, которая при выборе отправляет данные в этой строке на веб-сервер «B» с использованием отдельного класса AsyncTask. Я использую обратный вызов в asynctask с onTaskComplete для обновления активности. Что работает очень хорошо, я получаю правильный ответ от сервера.Обновление представления кнопки после async task listview
Вопрос: как обновить изображение кнопки в зависимости от ответа сервера. Например, если ответ с сервера равен 1, обновите изображение кнопки иначе, если ответ равен 0, не измените изображение кнопки. Я просто не знаю, как передать ответ от активности на адаптер, чтобы обновить изображение кнопки. Любой совет будет принят во внимание.
МОЙ КОД:
адаптер:
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