資源簡介
使用EditText和ListView實現的可輸入篩選的Spinner,輸入后觸發自動搜索,搜索支持原字符,漢字支持拼音全拼和首字母。代碼為demo使用示例,可直接在AndroidStudio中打開使用。

代碼片段和文件信息
package?com.example.filterablespinner;
import?java.util.ArrayList;
import?android.app.Activity;
import?android.content.Intent;
import?android.os.Bundle;
import?android.text.Editable;
import?android.text.TextWatcher;
import?android.view.View;
import?android.view.Window;
import?android.widget.AdapterView;
import?android.widget.AdapterView.OnItemClickListener;
import?android.widget.ArrayAdapter;
import?android.widget.EditText;
import?android.widget.ListView;
import?android.widget.TextView;
public?class?FilterableSpinner?extends?Activity?{
//按鈕靜態緩存,該用法可以避免使用startActivityForResult來獲取按鈕返回的時間
private?static?TextView?sTvResult;
private?static?ArrayList?sDataList;//所有的數據list
private?EditText?etFilter;
private?ListView?lvData;
private?ArrayAdapter?dataAdapter;
private?ArrayList?filterDataList?=?new?ArrayList<>();//查詢后的數據list
public?static?void?StartMe(Activity?activityTextView?tvResult?ArrayList?dataList){
sTvResult?=?tvResult;
sDataList?=?dataList;
activity.startActivity(new?Intent(activityFilterableSpinner.class));
}
@Override
protected?void?onCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_title);
setContentView(R.layout.filterable_spinner);
initViewAndEvent();
updateFilterData(““);
}
//初始化控件
private?void?initViewAndEvent()?{
etFilter?=?(EditText)?findViewById(R.id.etFilter);
lvData?=?(ListView)?findViewById(R.id.lvData);
etFilter.addTextChangedListener(new?TextWatcher()?{
@Override
public?void?beforeTextChanged(CharSequence?s?int?start?int?count?int?after)?{
}
@Override
public?void?onTextChanged(CharSequence?s?int?start?int?before?int?count)?{
if?(etFilter.getText()?!=?null)?{
updateFilterData(etFilter.getText().toString());
dataAdapter.notifyDataSetChanged();
}
}
@Override
public?void?afterTextChanged(Editable?s)?{
}
});
dataAdapter?=?new?ArrayAdapter<>(thisandroid.R.layout.simple_spinner_itemfilterDataList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
lvData.setAdapter(dataAdapter);
lvData.setOnItemClickListener(new?OnItemClickListener()?{
@Override
public?void?onItemClick(AdapterView>?parent?View?view?int?position?long?id)?{
sTvResult.setText(filterDataList.get(position));
finish();
}
});
}
//當editText變化時調用的方法,來判斷所輸入是否包含在所屬數據中
private?void?updateFilterData(String?inputStr)?{
filterDataList.clear();
for?(String?item:sDataList)?{
if?(item.contains(inputStr)?||
PinYinUtils.getFullSpell(item).contains(inputStr)?||
PinYinUtils.getFirstSpell(item).contains(inputStr))?{
filterDataList.add(item);
}
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-04-21?11:15??FilterableSpinner\
?????目錄???????????0??2018-04-21?11:16??FilterableSpinner\app\
?????文件????????7891??2018-04-21?11:13??FilterableSpinner\app\app.iml
?????文件?????????513??2018-04-21?11:10??FilterableSpinner\app\build.gradle
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\libs\
?????文件??????188920??2006-06-21?23:16??FilterableSpinner\app\libs\pinyin4j-2.5.0.jar
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\
?????文件?????????887??2018-04-21?11:10??FilterableSpinner\app\src\main\AndroidManifest.xm
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\java\
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\java\com\
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\java\com\example\
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\java\com\example\filterablespinner\
?????文件????????2958??2018-04-21?11:09??FilterableSpinner\app\src\main\java\com\example\filterablespinner\FilterableSpinner.java
?????文件????????1333??2018-04-21?11:09??FilterableSpinner\app\src\main\java\com\example\filterablespinner\MainActivity.java
?????文件????????3842??2018-04-21?11:09??FilterableSpinner\app\src\main\java\com\example\filterablespinner\PinYinUtils.java
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\res\
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\res\drawable-hdpi\
?????文件????????1900??2018-04-21?10:58??FilterableSpinner\app\src\main\res\drawable-hdpi\down_arrow.png
?????文件????????4147??2018-04-20?22:47??FilterableSpinner\app\src\main\res\drawable-hdpi\ic_launcher.png
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\res\layout\
?????文件?????????746??2018-04-21?10:16??FilterableSpinner\app\src\main\res\layout\filterable_spinner.xm
?????文件?????????717??2018-04-21?11:02??FilterableSpinner\app\src\main\res\layout\main_activity.xm
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\app\src\main\res\values\
?????文件?????????121??2018-04-21?11:11??FilterableSpinner\app\src\main\res\values\strings.xm
?????文件?????????316??2018-04-20?22:47??FilterableSpinner\build.gradle
?????文件?????????871??2018-04-21?11:13??FilterableSpinner\FilterableSpinner.iml
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\gradle\
?????文件????????4971??2018-04-20?22:47??FilterableSpinner\gradlew
?????文件????????2404??2018-04-20?22:47??FilterableSpinner\gradlew.bat
?????目錄???????????0??2018-04-21?11:14??FilterableSpinner\gradle\wrapper\
............此處省略4個文件信息
- 上一篇:安卓開發Wifi無線調試工具
- 下一篇:jacob 開發包
評論
共有 條評論