package info.justaway.adapter; import android.content.Context; import android.os.AsyncTask; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import info.justaway.R; import info.justaway.model.TwitterManager; import info.justaway.model.UserListWithRegistered; import info.justaway.util.MessageUtil; public class RegisterListAdapter extends ArrayAdapter<UserListWithRegistered> { private LayoutInflater mInflater; private int mLayout; private long[] mUserId; public RegisterListAdapter(Context context, int textViewResourceId, long userId) { super(context, textViewResourceId); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mLayout = textViewResourceId; mUserId = new long[]{userId}; } @Override public View getView(int position, View convertView, ViewGroup parent) { // ビューを受け取る View view = convertView; if (view == null) { // 受け取ったビューがnullなら新しくビューを生成 view = mInflater.inflate(this.mLayout, null); if (view == null) { return null; } } final UserListWithRegistered userListWithRegistered = getItem(position); final CheckBox checkbox = (CheckBox) view.findViewById(R.id.checkbox); if (checkbox != null) { checkbox.setText(userListWithRegistered.getUserList().getName()); checkbox.setOnCheckedChangeListener(null); checkbox.setChecked(userListWithRegistered.isRegistered()); checkbox.setTag(userListWithRegistered.getUserList().getId()); checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (b == userListWithRegistered.isRegistered()) { return; } userListWithRegistered.setRegistered(b); MessageUtil.showProgressDialog(getContext(), getContext().getString(R.string.progress_process)); if (b) { CreateUserListMembersTask task = new CreateUserListMembersTask() { @Override protected void onPostExecute(Boolean success) { MessageUtil.dismissProgressDialog(); if (success) { MessageUtil.showToast(R.string.toast_add_to_list_success); } else { MessageUtil.showToast(R.string.toast_add_to_list_failure); userListWithRegistered.setRegistered(false); notifyDataSetChanged(); } } }; task.execute(userListWithRegistered.getUserList().getId()); } else { DestroyUserListMembersTask task = new DestroyUserListMembersTask() { @Override protected void onPostExecute(Boolean success) { MessageUtil.dismissProgressDialog(); if (success) { MessageUtil.showToast(R.string.toast_remove_from_list_success); } else { MessageUtil.showToast(R.string.toast_remove_from_list_failure); userListWithRegistered.setRegistered(true); notifyDataSetChanged(); } } }; task.execute(userListWithRegistered.getUserList().getId()); } } }); } return view; } private class CreateUserListMembersTask extends AsyncTask<Long, Void, Boolean> { @Override protected Boolean doInBackground(Long... params) { try { TwitterManager.getTwitter().createUserListMembers(params[0], mUserId); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } private class DestroyUserListMembersTask extends AsyncTask<Long, Void, Boolean> { @Override protected Boolean doInBackground(Long... params) { try { TwitterManager.getTwitter().destroyUserListMembers(params[0], mUserId); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } }