Notes![what is notes.io? What is notes.io?](/theme/images/whatisnotesio.png)
![]() ![]() Notes - notes.io |
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.LinkedList;
import pt.ipleiria.estg.dei.contacts.adapters.ContactsAdapter;
import pt.ipleiria.estg.dei.contacts.model.Contact;
import pt.ipleiria.estg.dei.contacts.model.ContactManager;
public class SearchActivity extends AppCompatActivity {
private static final int REQUEST_EDIT = 1;
private static final String UNDEFINED = "Undefined";
private ListView listViewContacts;
private Spinner spinnerID;
private Spinner spinnerYearMin;
private Spinner spinnerYearMax;
private EditText editTextEmailLeft;
private Spinner spinnerDomain;
private LinearLayout groupYear;
private TextView textViewYearMax;
private LinearLayout groupEmail;
private ImageButton imageButtonSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
listViewContacts = (ListView) findViewById(R.id.listViewContacts);
spinnerID = (Spinner) findViewById((R.id.spinnerID));
spinnerYearMin = (Spinner) findViewById((R.id.spinnerYearMin));
spinnerYearMax = (Spinner) findViewById((R.id.spinnerYearMax));
editTextEmailLeft = (EditText) findViewById((R.id.editTextEmailLeft));
spinnerDomain = (Spinner) findViewById((R.id.spinnerDomain));
groupYear = (LinearLayout) findViewById(R.id.groupYear);
textViewYearMax = (TextView) findViewById(R.id.textViewYearMax);
groupEmail = (LinearLayout) findViewById(R.id.groupEmail);
imageButtonSearch = (ImageButton) findViewById(R.id.imageButtonSearch);
spinnerID.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Esconder
updateContactsView();
if (spinnerID.getSelectedItem() == UNDEFINED) {
groupVisibility(View.VISIBLE, View.VISIBLE);
} else {
groupVisibility(View.GONE, View.GONE);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//do nothing
}
});
spinnerYearMin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
updateContactsView();
populateSpinnerDomain();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//do nothing
}
});
spinnerYearMax.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
updateContactsView();
populateSpinnerDomain();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//do nothing
}
});
spinnerDomain.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Esconder
updateContactsView();
if (spinnerDomain.getSelectedItem().toString() == UNDEFINED)
emailLeftVisibility(View.INVISIBLE);
else
emailLeftVisibility(View.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//do nothing
}
});
populateSpinnerID();
populateSpinnerYear(false);
populateSpinnerYear(true);
populateSpinnerDomain();
updateContactsView();
listViewContacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(SearchActivity.this, ContactActivity.class);
intent.putExtra(ContactActivity.CONTACT_TO_EDIT, id);
startActivityForResult(intent, REQUEST_EDIT);
}
});
}
private void populateSpinnerID() {
LinkedList<String> ids = new LinkedList<>();
ids.add(UNDEFINED);
for (Long id : ContactManager.INSTANCE.getAllIds()) {
ids.add(String.valueOf(id));
}
spinnerID.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, ids));
}
private void populateSpinnerYear(boolean max) {
LinkedList<String> years = new LinkedList<>();
years.add(UNDEFINED);
for(Integer year: ContactManager.INSTANCE.getAllYears()) {
years.add(String.valueOf(year));
}
if (max)
spinnerYearMax.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, years));
else
spinnerYearMin.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, years));
}
private void populateSpinnerDomain() {
LinkedList<String> domains = new LinkedList<>();
domains.add(UNDEFINED);
String yearMin = (String) spinnerYearMin.getSelectedItem();
String yearMax = (String) spinnerYearMax.getSelectedItem();
if (yearMax != UNDEFINED && yearMin != UNDEFINED && yearMax.equals(yearMin)) {
for (String domain : ContactManager.INSTANCE.getAllDomains(Integer.parseInt(yearMin))) {
domains.add(domain);
}
}else {
for (String domain : ContactManager.INSTANCE.getAllDomains()) {
domains.add(domain);
}
}
spinnerDomain.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, domains));
}
private void updateContactsView() {
LinkedList<Contact> contacts = new LinkedList<>();
String idText = (String) spinnerID.getSelectedItem();
if (idText == UNDEFINED) {
String domainText = (String) spinnerDomain.getSelectedItem();
if (domainText != UNDEFINED) {
String leftEmail = editTextEmailLeft.getText().toString().trim();
if (!leftEmail.isEmpty()) {
Contact c = ContactManager.INSTANCE.getByEmail(leftEmail + "@" + domainText);
if (c != null) {
contacts.add(c);
}
} else {
String yearMin = (String) spinnerYearMin.getSelectedItem();
String yearMax = (String) spinnerYearMax.getSelectedItem();
if (yearMax != UNDEFINED && yearMin != UNDEFINED && yearMax.equals(yearMin)) {
for(Contact contact : ContactManager.INSTANCE.getAll(Integer.parseInt(yearMin), domainText)){
contacts.add(contact);
}
} else {
//domain
for (Contact c : ContactManager.INSTANCE.getAll(domainText)) {
contacts.add(c);
}
}
}
} else {
String yearMin = (String) spinnerYearMin.getSelectedItem();
String yearMax = (String) spinnerYearMax.getSelectedItem();
if (yearMax != UNDEFINED && yearMin != UNDEFINED && yearMax.equals(yearMin)) {
for(Contact contact : ContactManager.INSTANCE.getAll(Integer.parseInt(yearMin), domainText)){
contacts.add(contact);
}
} else {
// adicionar todos
for (Contact c : ContactManager.INSTANCE.getAll(ContactManager.OrderBy.ID_ASC)) {
contacts.add(c);
}
}
}
} else {
contacts.add(ContactManager.INSTANCE.
getById(Long.parseLong(idText)));
}
listViewContacts.setAdapter(new ContactsAdapter(this, contacts));
}
private void yearMaxVisibility(int visibility) {
spinnerYearMax.setVisibility(visibility);
textViewYearMax.setVisibility(visibility);
}
private void emailLeftVisibility(int visibility) {
editTextEmailLeft.setVisibility(visibility);
imageButtonSearch.setVisibility(visibility);
}
private void groupVisibility(int yearVisibility, int emailVisibility) {
groupYear.setVisibility(yearVisibility);
groupEmail.setVisibility(emailVisibility);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_EDIT && resultCode == RESULT_OK) {
updateContactsView();
}
}
public void onClickSearch(View view) {
updateContactsView();
}
}
![]() |
Notes is a web-based application for online taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000+ notes created and continuing...
With notes.io;
- * You can take a note from anywhere and any device with internet connection.
- * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
- * You can quickly share your contents without website, blog and e-mail.
- * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
- * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.
Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.
Easy: Notes.io doesn’t require installation. Just write and share note!
Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )
Free: Notes.io works for 14 years and has been free since the day it was started.
You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;
Email: [email protected]
Twitter: http://twitter.com/notesio
Instagram: http://instagram.com/notes.io
Facebook: http://facebook.com/notesio
Regards;
Notes.io Team