Skip to content

Instantly share code, notes, and snippets.

@ksandric
Created November 28, 2016 10:58
Show Gist options
  • Save ksandric/404a2693aa288be16b4c3502eabe9c82 to your computer and use it in GitHub Desktop.
Save ksandric/404a2693aa288be16b4c3502eabe9c82 to your computer and use it in GitHub Desktop.
Android contact list
package com.example.dreamcast.KiteFlightAndroidShvaiba;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.AsyncTask;
import android.provider.ContactsContract;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.dreamcast.KiteFlightAndroidShvaiba.additional.SelectUser;
import com.example.dreamcast.KiteFlightAndroidShvaiba.additional.SelectUserAdapter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class SelectRecipientActivity extends AppCompatActivity {
Button addNew;
int x =1;
// ArrayList
ArrayList<SelectUser> selectUsers;
List<SelectUser> temp;
// Contact List
ListView listView;
// Cursor to load contacts list
Cursor phones, email;
// Pop up
ContentResolver resolver;
SearchView search;
SelectUserAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_recipient);
//configuration ActionBar
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Select Recipient");
addNew = (Button) findViewById(R.id.buttonAddNew);
listView = (ListView) findViewById(R.id.contacts_list);
search = (SearchView) findViewById(R.id.searchView);
selectUsers = new ArrayList<SelectUser>();
resolver = this.getContentResolver();
email = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, null, null, ContactsContract.CommonDataKinds.Email.DATA + " ASC");
phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
LoadContact loadContact = new LoadContact();
loadContact.execute();
//*** setOnQueryTextListener ***
search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.filter(newText);
return false;
}
});
addNew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SelectRecipientActivity.this,AddNewRecipientActivity.class);
startActivity(intent);
}
});
}
////
class LoadContact extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... voids) {
// Get Contact list from Phone
if (phones != null) {
Log.e("count", "" + phones.getCount());
if (phones.getCount() == 0) {
Toast.makeText(SelectRecipientActivity.this, "No contacts in your contact list.", Toast.LENGTH_LONG).show();
}
while (phones.moveToNext() && email.moveToNext()) {
Bitmap bit_thumb = null;
String id = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
String name = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String EmailAddr = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String image_thumb = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI));
try {
if (image_thumb != null) {
bit_thumb = MediaStore.Images.Media.getBitmap(resolver, Uri.parse(image_thumb));
} else {
Log.e("No Image Thumb", "--------------");
}
} catch (IOException e) {
e.printStackTrace();
}
SelectUser selectUser = new SelectUser();
selectUser.setThumb(bit_thumb);
selectUser.setName(name);
selectUser.setPhone(phoneNumber);
selectUser.setEmail(EmailAddr);
if(name==EmailAddr) selectUser.setEmail("no email");
selectUser.setCheckedBox(false);
selectUser.setRadioButton(false);
selectUsers.add(selectUser);
}
} else {
Log.e("Cursor close 1", "----------------");
}
//phones.close();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
adapter = new SelectUserAdapter(selectUsers, SelectRecipientActivity.this);
listView.setAdapter(adapter);
// Select item on listclick
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.e("search", "here---------------- listener");
SelectUser data = selectUsers.get(i);
}
});
listView.setFastScrollEnabled(true);
}
}
@Override
protected void onStop() {
super.onStop();
phones.close();
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_write_message, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
case R.id.action_next:
startActivity(new Intent(this, SelectReturnActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
package com.example.dreamcast.KiteFlightAndroidShvaiba.additional;
/**
* Created by Dreamcast on 19.09.2016.
*/
import android.graphics.Bitmap;
public class SelectUser {
String name;
public Bitmap getThumb() {
return thumb;
}
public void setThumb(Bitmap thumb) {
this.thumb = thumb;
}
Bitmap thumb;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
String phone;
public Boolean getCheckedBox() {
return checkedBox;
}
public Boolean getRadioButton() {
return radioButton;
}
public void setRadioButton(Boolean radioButton) {
this.radioButton = radioButton;
}
public void setCheckedBox(Boolean checkedBox) {
this.checkedBox = checkedBox;
}
Boolean radioButton = false;
Boolean checkedBox = false;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
package com.example.dreamcast.KiteFlightAndroidShvaiba.additional;
/**
* Created by Dreamcast on 19.09.2016.
*/
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import com.example.dreamcast.KiteFlightAndroidShvaiba.R;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class SelectUserAdapter extends BaseAdapter {
public List<SelectUser> _data;
private ArrayList<SelectUser> arraylist;
Context _c;
ViewHolder v;
public SelectUserAdapter(List<SelectUser> selectUsers, Context context) {
_data = selectUsers;
_c = context;
this.arraylist = new ArrayList<SelectUser>();
this.arraylist.addAll(_data);
}
@Override
public int getCount() {
return _data.size();
}
@Override
public Object getItem(int i) {
return _data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View view = convertView;
if (view == null) {
LayoutInflater li = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.list_view, null);
Log.e("Inside", "here--------------------------- In view1");
} else {
view = convertView;
Log.e("Inside", "here--------------------------- In view2");
}
v = new ViewHolder();
v.title = (TextView) view.findViewById(R.id.name);
v.check = (CheckBox) view.findViewById(R.id.check);
v.radioButton = (RadioButton) view.findViewById(R.id.radioButton);
v.phone = (TextView) view.findViewById(R.id.no);
v.mail = (TextView) view.findViewById(R.id.mail);
v.imageView = (ImageView) view.findViewById(R.id.pic);
final SelectUser data = (SelectUser) _data.get(i);
v.title.setText(data.getName());
v.check.setChecked(data.getCheckedBox());
v.mail.setText(data.getEmail());
v.radioButton.setChecked(data.getRadioButton());
v.phone.setText(data.getPhone());
//v.mail.setText(data.getEmail());
// Set image if exists
try {
if (data.getThumb() != null) {
v.imageView.setImageBitmap(data.getThumb());
} else {
v.imageView.setImageResource(R.drawable.image);
}
} catch (OutOfMemoryError e) {
// Add default picture
v.imageView.setImageDrawable(this._c.getDrawable(R.drawable.image));
e.printStackTrace();
}
Log.e("Image Thumb", "--------------" + data.getThumb());
// Set check box listener android
v.check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox checkBox = (CheckBox) view;
if (checkBox.isChecked()) {
data.setCheckedBox(true);
} else {
data.setCheckedBox(false);
}
}
});
v.radioButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RadioButton radioButton = (RadioButton) view;
if (radioButton.isChecked()) {
data.setRadioButton(true);
} else {
data.setRadioButton(false);
}
}
});
view.setTag(data);
return view;
}
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
_data.clear();
if (charText.length() == 0) {
_data.addAll(arraylist);
} else {
for (SelectUser wp : arraylist) {
if (wp.getName().toLowerCase(Locale.getDefault())
.contains(charText)) {
_data.add(wp);
}
}
}
notifyDataSetChanged();
}
static class ViewHolder {
ImageView imageView;
TextView title, phone, mail;
CheckBox check;
RadioButton radioButton;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment