package org.intracode.contactmanager; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.TabHost; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends Activity { EditText nameTxt, phoneTxt, emailTxt, addressTxt; ImageView contactImageImgView; List<Contact> Contacts = new ArrayList<Contact>(); ListView contactListView; Uri imageUri = Uri.parse("android.resource://org.intracode.contactmanager/drawable/no_user_logo.png"); DatabaseHandler dbHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); nameTxt = (EditText) findViewById(R.id.txtName); phoneTxt = (EditText) findViewById(R.id.txtPhone); emailTxt = (EditText) findViewById(R.id.txtEmail); addressTxt = (EditText) findViewById(R.id.txtAddress); contactListView = (ListView) findViewById(R.id.listView); contactImageImgView = (ImageView) findViewById(R.id.imgViewContactImage); dbHandler = new DatabaseHandler(getApplicationContext()); TabHost tabHost = (TabHost) findViewById(R.id.tabHost); tabHost.setup(); TabHost.TabSpec tabSpec = tabHost.newTabSpec("creator"); tabSpec.setContent(R.id.tabCreator); tabSpec.setIndicator("Creator"); tabHost.addTab(tabSpec); tabSpec = tabHost.newTabSpec("list"); tabSpec.setContent(R.id.tabContactList); tabSpec.setIndicator("List"); tabHost.addTab(tabSpec); final Button addBtn = (Button) findViewById(R.id.btnAdd); addBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Contact contact = new Contact(dbHandler.getContactsCount(), String.valueOf(nameTxt.getText()), String.valueOf(phoneTxt.getText()), String.valueOf(emailTxt.getText()), String.valueOf(addressTxt.getText()), imageUri); if (!contactExists(contact)) { dbHandler.createContact(contact); Contacts.add(contact); Toast.makeText(getApplicationContext(), String.valueOf(nameTxt.getText()) + " has been added to your Contacts!", Toast.LENGTH_SHORT).show(); return; } Toast.makeText(getApplicationContext(), String.valueOf(nameTxt.getText()) + " already exists. Please use a different name.", Toast.LENGTH_SHORT).show(); } }); nameTxt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { addBtn.setEnabled(String.valueOf(nameTxt.getText()).trim().length() > 0); } @Override public void afterTextChanged(Editable editable) { } }); contactImageImgView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Contact Image"), 1); } }); if (dbHandler.getContactsCount() != 0) Contacts.addAll(dbHandler.getAllContacts()); populateList(); } private boolean contactExists(Contact contact) { String name = contact.getName(); int contactCount = Contacts.size(); for (org.intracode.contactmanager.Contact Contact : Contacts) { if (name.compareToIgnoreCase(Contact.getName()) == 0) return true; } return false; } public void onActivityResult(int reqCode, int resCode, Intent data) { if (resCode == RESULT_OK) { if (reqCode == 1) { imageUri = data.getData(); contactImageImgView.setImageURI(data.getData()); } } } private void populateList() { ArrayAdapter<Contact> adapter = new ContactListAdapter(); contactListView.setAdapter(adapter); } private class ContactListAdapter extends ArrayAdapter<Contact> { public ContactListAdapter() { super (MainActivity.this, R.layout.listview_item, Contacts); } @Override public View getView(int position, View view, ViewGroup parent) { if (view == null) view = getLayoutInflater().inflate(R.layout.listview_item, parent, false); Contact currentContact = Contacts.get(position); TextView name = (TextView) view.findViewById(R.id.contactName); name.setText(currentContact.getName()); TextView phone = (TextView) view.findViewById(R.id.phoneNumber); phone.setText(currentContact.getPhone()); TextView email = (TextView) view.findViewById(R.id.emailAddress); email.setText(currentContact.getEmail()); TextView address = (TextView) view.findViewById(R.id.cAddress); address.setText(currentContact.getAddress()); ImageView ivContactImage = (ImageView) view.findViewById(R.id.ivContactImage); ivContactImage.setImageURI(currentContact.getImageURI()); return view; } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }