2012-10-10 33 views
2

我在使用简单适配器时在listview中进行搜索栏。我正在使用下面的代码。执行此代码时,它显示空指针异常。如何在列表视图中使用简单适配器进行列表视图搜索?

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); 

      } 
     SimpleAdpter 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

您的代码缺少... – HaskellElephant

+0

你刚才忘了代码的人...... –

回答

1

试试这个

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" }; 
String listview_array[]={"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"}; 
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)); 
     } 
    }); 
} 
    } 
+0

就像一个魅力。谢谢 :) –