• 大小: 242KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-07
  • 语言: Java
  • 标签: Spinner  

资源简介

使用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.xml
     目录           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.xml
     文件         717  2018-04-21 11:02  FilterableSpinner\app\src\main\res\layout\main_activity.xml
     目录           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.xml
     文件         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个文件信息

评论

共有 条评论