in my app i want to filter the names and number according to entered text in the autocomplete,but it is returning me null pointer exception and my application get shut down.i am using same adapter for listview and autocompletetextview.how to get the list item starts with entered text by user.,please suggest something....
MainActivity
public class MainActivity extends Activity implements OnItemClickListener,
OnItemSelectedListener {
SearchView mSearchView;
AutoCompleteTextView searchText;
ArrayList<String> name1 = new ArrayList<String>();
ArrayList<String> phno1 = new ArrayList<String>();
String[] cellArray = null;
String contacts;
static int check1;
ListView lv;
String phoneNumber, name;
StringBuilder b = new StringBuilder();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
ColorDrawable colorDrawable = new ColorDrawable(
Color.parseColor("#00aef0"));
actionBar.setBackgroundDrawable(colorDrawable);
setContentView(R.layout.get);
// mStatusView = (TextView) findViewById(R.id.text1);
getAllCallLogs(this.getContentResolver());
searchText = (AutoCompleteTextView) findViewById(R.id.autocomplete);
lv = (ListView) findViewById(R.id.lv);
ma = new MyAdapter();
searchText.setThreshold(1);
searchText.setAdapter(ma);
lv.setAdapter(ma);
lv.setOnItemClickListener(this);
lv.setItemsCanFocus(false);
lv.setTextFilterEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case android.R.id.home:
StringBuilder checkedcontacts = new StringBuilder();
System.out.println(".............." + ma.mCheckStates.size());
for (int i = 0; i < name1.size(); i++)
{
if (ma.mCheckStates.get(i) == true) {
// phno0.add(name1.get(i).toString());
phno0.add(phno1.get(i).toString());
checkedcontacts.append(name1.get(i).toString());
checkedcontacts.append("\n");
} else {
System.out.println("..Not Checked......"
+ name1.get(i).toString());
}
}
Intent returnIntent = new Intent();
returnIntent.putStringArrayListExtra("name", phno0);
setResult(RESULT_OK, returnIntent);
finish();
break;
case R.id.addPage:
break;
case R.id.action_search:
searchText.setVisibility(View.VISIBLE);
//String text_To_search= searchText.getText().toString().trim();
searchText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub
ma.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
});
break;
}
return super.onOptionsItemSelected(item);
}
ma.toggle(position);
//
}
public void getAllCallLogs(ContentResolver cr) {
mPeopleList.clear();
Cursor phones = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
+ " ASC");
while (phones.moveToNext()) {
phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
System.out.println(phoneNumber);
name1.add(name);
phno1.add(phoneNumber);
// meMap.put("name1","phno1");
// mPeopleList.add(name);
// mPeopleList.add(phoneNumber);
}
phones.close();
}
class MyAdapter extends BaseAdapter implements Filterable,
CompoundButton.OnCheckedChangeListener {
public SparseBooleanArray mCheckStates;
// public ListFilter listFilter;
LayoutInflater mInflater;
TextView tv1, tv;
CheckBox cb;
MyAdapter() {
mCheckStates = new SparseBooleanArray(name1.size());
mInflater = (LayoutInflater) MainActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (convertView == null)
vi = mInflater.inflate(R.layout.row, null);
tv = (TextView) vi.findViewById(R.id.textView1);
tv1 = (TextView) vi.findViewById(R.id.textView2);
cb = (CheckBox) vi.findViewById(R.id.checkBox1);
tv.setText(name1.get(position));
tv1.setText(phno1.get(position));
cb.setTag(position);
cb.setChecked(mCheckStates.get(position, false));
cb.setOnCheckedChangeListener(this);
return vi;
}
public boolean isChecked(int position) {
return mCheckStates.get(position, false);
}
public void setChecked(int position, boolean isChecked) {
mCheckStates.put(position, isChecked);
}
public void toggle(int position) {
setChecked(position, !isChecked(position));
}
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
mCheckStates.put((Integer) buttonView.getTag(), isChecked);
}
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
return null;
}
}
}
logcat
04-01 14:29:36.318: E/AndroidRuntime(12166): FATAL EXCEPTION: main
04-01 14:29:36.318: E/AndroidRuntime(12166): java.lang.NullPointerException
04-01 14:29:36.318: E/AndroidRuntime(12166): at com.example.smscampaign.MainActivity$1.onTextChanged(MainActivity.java:193)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.widget.TextView.sendOnTextChanged(TextView.java:8366)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.widget.TextView.handleTextChanged(TextView.java:8428)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:10367)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:676)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:435)
04-01 14:29:36.318: E/AndroidRuntime(12166): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:333)
04-01 14:29:36.318: E/AndroidRuntime(12166): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.os.Looper.loop(Looper.java:137)
04-01 14:29:36.318: E/AndroidRuntime(12166): at android.app.ActivityThread.main(ActivityThread.java:5283)
04-01 14:29:36.318: E/AndroidRuntime(12166): at java.lang.reflect.Method.invokeNative(Native Method)
04-01 14:29:36.318: E/AndroidRuntime(12166): at java.lang.reflect.Method.invoke(Method.java:511)
04-01 14:29:36.318: E/AndroidRuntime(12166): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-01 14:29:36.318: E/AndroidRuntime(12166): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-01 14:29:36.318: E/AndroidRuntime(12166): at dalvik.system.NativeStart.main(Native Method)