0

I populate an alerttdialog from a database. I store these values in an arrayList, convert them to an charsequence list then set them to my alertdialog builder. As shown:

This is a screenshot of my populated 'text template' options from my database:

enter image description here

At the moment when I click one of my options for example Call me. it displays as it should within a specified edittext. If I click on one of the other options such as 'Email me' this is ignored, only my first 'if' option Call me. will work as shown:

enter image description here

This leads me to believe for some reason only Call me has been added to my charsequence array but I'm not sure why. Here is my complete class. I am getting this issue at the longOnClick method. I have marked this issue area on the code below:

 package com.example.flybase2;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ContactsEmail extends Activity implements OnClickListener, OnLongClickListener{

String emailPassed;
String emailAdd;
String emailSub;
String emailMess;
EditText setEmailAddress;
EditText setEmailSubject;
EditText setEmailMessage;
Button btnSendEmail;
int i;
CharSequence[] items;
DBHandlerTempComms addTemp = new DBHandlerTempComms(this, null, null);




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

setContentView(R.layout.emaillayout);



Bundle extras = getIntent().getExtras(); 
if (extras != null) {
    emailPassed = extras.getString("passedEmailAdd"); 
}


setEmailAddress = (EditText) findViewById (R.id.inputEmailAddress);
setEmailAddress.setText(emailPassed);
setEmailSubject = (EditText) findViewById (R.id.inputEmailSubject);
setEmailMessage = (EditText) findViewById (R.id.inputEmailMessage);



btnSendEmail = (Button)findViewById(R.id.btnSendEmail);

btnSendEmail.setOnClickListener(this);

setEmailMessage.setOnLongClickListener(this);

}


@Override
public void onClick(View sendEmailClick) {

    emailAdd = setEmailAddress.getText().toString();
    emailSub = setEmailSubject.getText().toString();
    emailMess = setEmailMessage.getText().toString();

    Intent sendEmailIntent = new Intent(Intent.ACTION_SEND); 
    sendEmailIntent.setType("message/rfc822");
       sendEmailIntent.putExtra(Intent.EXTRA_EMAIL,new String[] {emailAdd});  
       sendEmailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSub); 
       sendEmailIntent.putExtra(Intent.EXTRA_TEXT, emailMess); 
       startActivity(Intent.createChooser(sendEmailIntent, "Send mail..."));
       finish();

}

 *********************ISSUE AREA********************
        @Override
        public boolean onLongClick(View v) {



            addTemp.open();
            Cursor getTemps = addTemp.setList();
            addTemp.close();



            if (getTemps != null) {
                String[] from = new String[getTemps.getCount()];
                startManagingCursor(getTemps);
                if (getTemps.moveToFirst()) {
                    int count = 0;
                    do {
                        String userName = getTemps.getString(1);
                        from[count] = userName;
                        count++;
                    } while (getTemps.moveToNext());
                }

                ArrayList<String> content = new ArrayList<String>();  

               for (int a = 0; a < from.length; a ++)
               { 

               content.add(from[a]);              

               }           
               items = content.toArray(new CharSequence[content.size()]);
            }


            Builder alertDialogBuilder = new AlertDialog.Builder(ContactsEmail.this);

            alertDialogBuilder.setTitle("Message Templates:");



            alertDialogBuilder.setItems(items, new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int item) {

                    if (items[item].equals("Call me.")) {

                        setEmailMessage.setText(items[item]);

                    }

                    else if (items[item].equals("Text me.")) {

                        setEmailMessage.setText(items[item]);


                    }

                    else if (items[item].equals("Leaving the house now.")) {


                        setEmailMessage.setText(items[item]);

                    }

                    else if (items[item].equals("Leaving work now.")) {


                        setEmailMessage.setText(items[item]);

                    }

                    else if (items[item].equals("Create New Template +")) {


                        AlertDialog.Builder builder = new AlertDialog.Builder(ContactsEmail.this);
                        builder.setTitle("Type New Template:");


                                                final EditText input = new EditText(ContactsEmail.this);

                                                builder.setView(input);

                                                builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dialog, int whichButton) {
                                                  Editable value = input.getText();

                                                  setEmailMessage.setText(value);

                                                  String templateValue = (String)value.toString();
                                                  addTemp.open();
                                                  addTemp.insertTemplate(templateValue);
                                                  addTemp.close();


                                                  }
                                                });

                                                builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                                  public void onClick(DialogInterface dialog, int whichButton) {

                                                  }
                                                });

                                                builder.show();

                    }

                }
               });

            alertDialogBuilder.show();


            return true;
        }


}
Kailua Bum
  • 1,368
  • 7
  • 25
  • 40
user1352057
  • 3,162
  • 9
  • 51
  • 117
  • Why don't you get rid of the duplicated code by checking for `"Create New Template +"` in one `if` statement and putting `setEmailMessage.setText(items[item]);` in the `else` clause? – harpun Feb 08 '13 at 21:28

1 Answers1

0

Slightly embarrassing but I've just realized I have different strings comparing my IFs to the strings stored in the charsequence, so it is now working!

user1352057
  • 3,162
  • 9
  • 51
  • 117