资源简介
使用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 开发包
相关资源
- android studiodemoSpinner下拉菜单多选的实
- android spinner 省份市二级联动
- android spinner intent 参数传递
- Android Spinner
- android单选复选按钮数据库综合Spinne
- Android 自定义spinner控件下拉框实现
- Android Spinner 绑定数据源入门级
- 仿android4.0 Spinner下拉效果
- 下拉列表Spinner入门级
- android 带图标的spinner控件
- 下拉菜单Spinner的使用源码
- 测试 Netbeans 组件面板内容的简单用法
- xamarin android spinner 简单
- android自定义spinner下拉框实现封装更通
- android 自定义Spinner源码实现
- android 自定义Spinner 控件
- spinner下拉框
评论
共有 条评论