一個有一串名字的清單(ListView)
因為太長 想找某個項目要一直滑動很麻煩
目的:
在畫面上方放一個搜尋用的edittext,打第一個字就跑出搜尋選項,
然後點下選項後跑到該項
XML:
使用AutoCompleteTextView,其他無特別之處
程式碼:
//前略
public class AutoText extends Activity {
//宣告要用的清單字串陣列
String[] namelist;
//宣告AutoCompleteTextView
AutoCompleteTextView myAutoCompleteTextView;
/*--------------------------*/
/*然後把資料丟到陣列裡*/
/*--------------------------*/
@Override
public void onCreate(Bundle savedInstanceState) {
//清單建立
ListView list = (ListView)findViewById(R.id.nameListView);
//中略
//快速搜尋
//把namelist丟到一個ArrayAdapter,android.R.layout.simple_dropdown_item_1line是內建的一行用xml
ArrayAdapter<String> qsadapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,namelist);
//建立AutoCompleteTextView
myAutoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.qstextview);
//把內容丟進去
myAutoCompleteTextView.setAdapter(qsadapter);
//聚焦於第一行,不做這行也沒差
myAutoCompleteTextView.setThreshold(1);
//快速搜尋點擊事件
myAutoCompleteTextView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//搜尋namelist,取得選項位置
//從頭迴圈到尾,若內容等於所點項目則聚焦到該項
//這裡可能有更好的搜尋法
for(int i=0;i<namelist.length;i++){
if(myAutoCompleteTextView.getText().toString().equals(namelist[i].toString())==true){
list.setSelection(i);
}
}
}
});
沒有留言:
張貼留言