2012-10-10 4 views
0

간단한 어댑터를 사용했을 때 listview에서 검색 막대를 만들고 있습니다. 아래 코드를 사용하고 있습니다. 이 코드를 실행하는 동안 널 포인터 예외가 표시됩니다. 어느 누구도 나를 도울 수 있습니까? 미리 감사드립니다.listview에 간단한 어댑터를 사용할 때 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); 
} 

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

게시물 로그 메시지 – Braj

답변

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" }; 
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)); 
     } 
    }); 
} 
} 
관련 문제