0

I am making a search bar in a listview when I used a simple adapter. I am using the below code. While executing this code it is showing a null pointer exception. Can any one helps me? Thanks in advance.

String headlines1[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE","iPhone 4S", "Samsung Galaxy Note 800","Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
for (int j = 0; j < headlines1.length; j++)  
{
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("row1", ":"+headlines1[j]);
    mylistData.add(map);
}

SimpleAdapter arrayAdapter = new SimpleAdapter(this, mylistData, R.layout.simple_list_item_2, row, new int[] { R.id.tv});
lst.setAdapter(arrayAdapter);
lst.setTextFilterEnabled(true);

inputsearch.addTextChangedListener(new TextWatcher()
    {
        @Override
        public void onTextChanged( CharSequence cs, int arg1, int arg2, int arg3)
        {
            // TODO Auto-generated method stub
            String searchString=inputsearch.getText().toString();
            int textLength=searchString.length();

            //clear the initial data set
            searchResults.clear();

            for(int i=0;i<mylistData.size();i++)
            {
                String playerName=mylistData.get(i).get("row1").toString();
                if(textLength<=playerName.length()){
                    //compare the String in EditText with Names in the ArrayList
                    if(searchString.equalsIgnoreCase(playerName.substring(0,textLength)))
                        searchResults.add(mylistData.get(i));
                }
            }

            arrayAdapter.notifyDataSetChanged();
        }
0

1 Answer 1

1

Have a look at the code below.

public class MainActivity extends Activity {

private ListView lv;
private EditText et;
private String listview_array[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE","SIX", "SEVEN", "EIGHT", "NINE", "TEN" };
private ArrayList<String> array_sort = new ArrayList<String>();
int textlength = 0;

public void onCreate(Bundle savedInstanceState)

{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.ListView01);
    et = (EditText) findViewById(R.id.EditText01);
    lv.setAdapter(new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, listview_array));
    et.addTextChangedListener(new TextWatcher()
    {
        public void afterTextChanged(Editable s)
        {
            // Abstract Method of TextWatcher Interface.

        }
        public void beforeTextChanged(CharSequence s,
        int start, int count, int after)
        {

            // Abstract Method of TextWatcher Interface.

        }
        public void onTextChanged(CharSequence s,
        int start, int before, int count)
        {
            textlength = et.getText().length();
            array_sort.clear();
            for (int i = 0; i < listview_array.length; i++)
            {
                if (textlength <= listview_array[i].length())
                {
                    if (et.getText().toString().equalsIgnoreCase(
                    (String)
                    listview_array[i].subSequence(0,
                    textlength)))
                    {
                        array_sort.add(listview_array[i]);
                    }
                }
            }

            lv.setAdapter(new ArrayAdapter<String>
            (MainActivity.this,
            android.R.layout.simple_list_item_1, array_sort));
        }
    });
}
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.