2013-01-18 40 views
-1

我無法從listview搜索,我嘗試了各種方法,但它不適合我(沒有錯誤)。我有其他的方式來搜索,但我想這樣做。無法使用Android中的自定義數組適配器進行搜索?

下面是代碼

public class MainActivity extends Activity implements TextWatcher { 

CustomAdapter mAdapter; 
ListView mListview; 
EditText search; 
List<String> tempCity, cityNames; 
String list[]; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    init(); 

    bindComponents(); 

    addListeners(); 
} 

private void addListeners() { 
    // TODO Auto-generated method stub 

    search.addTextChangedListener(this); 
} 

private void init() { 
    // TODO Auto-generated method stub 

    mPos = new ArrayList<Integer>(); 
    tempCity = new ArrayList<String>(); 
    cityNames = new ArrayList<String>(); 
    list = getResources().getStringArray(R.array.cityList); 
    cityNames.addAll(Arrays.asList(list)); 


} 



private void bindComponents() { 
    // TODO Auto-generated method stub 

    mListview = (ListView) findViewById(R.id.cityList); 

    mAdapter = new CustomAdapter(); 
    search = (EditText) findViewById(R.id.eTsearch); 
    mListview.setAdapter(mAdapter); 

} 

public class CustomAdapter extends ArrayAdapter<String> { 

    public CustomAdapter() { 
     super(MainActivity.this, android.R.layout.simple_list_item_1, 
       cityNames); 
     // TODO Auto-generated constructor stub 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return cityNames.size(); 
    } 

    @Override 
    public String getItem(int pos) { 
     // TODO Auto-generated method stub 
     return cityNames.get(pos); 
    } 

    @Override 
    public long getItemId(int pos) { 
     // TODO Auto-generated method stub 
     return pos; 
    } 

    @Override 
    public View getView(int pos, View v, ViewGroup vGroup) { 
     // TODO Auto-generated method stub 

     View row = v; 

     if (row == null) { 

      row = getLayoutInflater().inflate(R.layout.main_row, null); 

     } 

     TextView mCityTv = (TextView) row.findViewById(R.id.itemTv); 
     mCityTv.setText(cityNames.get(pos)); 

     return row; 
    } 

} 

@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 

} 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    // TODO Auto-generated method stub 

    mAdapter.getFilter().filter(s.toString()); 
} 
} 

任何幫助將高度讚賞..

由於

+0

什麼功能是你造成麻煩?它是錯誤的還是僅僅是行爲不端?爲前者提供堆棧,後者的細節? – Grambot

+0

沒有錯誤,只是不工作.. – moDev

回答

0

我不得不切換由Implementing Filterable

請搜索的另一種方式看到我給出類似answer

相關問題