+ String[] items = {
+ getResources().getString(R.string.change_password),
+ getResources().getString(R.string.delete_account)
+ };
+ final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Preferences.this);
+ View convertView = getLayoutInflater().inflate(R.layout.alert_dialog_list_view, null);
+ alertDialogBuilder.setView(convertView);
+ ListView lv = (ListView) convertView.findViewById(R.id.list);
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(
+ Preferences.this,R.layout.simple_dialog_list_item,items);
+ lv.setAdapter(adapter);
+
+ //Setup proper inline listener
+ final AlertDialog alertDialog = alertDialogBuilder.create();
+ lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE);
+ Account accounts[] = am.getAccountsByType(MainApp.getAccountType());
+ for (Account a : accounts) {
+ if (a.name.equals(mAccountName)) {
+ if (position==0) {
+
+ // Change account password
+ Intent updateAccountCredentials = new Intent(Preferences.this, AuthenticatorActivity.class);
+ updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, a);
+ updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION,
+ AuthenticatorActivity.ACTION_UPDATE_TOKEN);
+ startActivity(updateAccountCredentials);
+ alertDialog.cancel();
+
+ } else if (position==1) {
+
+ // Remove account
+ am.removeAccount(a, Preferences.this, mHandler);
+ Log_OC.d(TAG, "Remove an account " + a.name);
+ alertDialog.cancel();
+ }
+ }
+ }
+ }
+ });
+ alertDialog.show();