忽略空格,而搜索列表视图的android [英] Ignore spaces while searching listview android

查看:159
本文介绍了忽略空格,而搜索列表视图的android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序使用的EditText 列表视图。我实现了搜索功能,并取得了的EditText 搜索栏。我使用的是 TextWatcher 即时检测更改。但是,当我输入空间到的EditText ,所有的列表视图物品都不见了。所以,我怎么忽略用户输入到空格的EditText ?:结果

 公共类MainActivity扩展FragmentActivity {最终的String []数据={\"Hydrogen\",\"Helium\",\"Lithium\",\"Beryllium\",\"Boron\",\"Carbon\",\"Nitrogen\",\"Oxygen\",\"Flourine\",\"Noen\",\"Sodium\",\"Magnesium\",\"Aluminium\",\"Silicon\",\"Phosphorous\",\"Sulphur\",\"Chlorine\",\"Argon\",\"Potassium\",\"Calcium\",\"Scandium\",\"Titanium\",\"Vanadium\",\"Chromium\",\"Manganese\",\"Iron\",\"Cobalt\",\"Nickel\",\"Copper\",\"Zinc\",\"Gallium\",\"Germanium\",\"Arsenic\",\"Selenium\",\"Bromine\",\"Krypton\",\"Rubidium\",\"Strontium\",\"Yttrium\",\"Zirconium\",\"Niobium\",\"Molybdenum\",\"Technetium\",\"Ruthenium\",\"Rhodium\",\"Palladium\",\"Silver\",\"Cadmium\",\"Indium\",\"Tin\",\"Antimony\",\"Tellurium\",
        \"Iodine\",\"Xenon\",\"Caesium\",\"Barium\",\"Lanthanum\",\"Cerium\",\"Praseodymium\",\"Neodymium\",\"Promethium\",\"Samarium\",\"Europium\",\"gadoliium\",\"Terbium\",\"Dysprosium\",\"Holmium\",\"Erbium\",\"Thulium\",\"Ytterbium\",\"Lutetium\",\"Hafnium\",\"Tantalum\",\"Tungsten\",\"Rhenium\",\"Osmium\",\"Iridium\",\"Platinum\",\"Gold\",\"Mercury\",\"Thallium\",\"Lead\",\"Bismuth\",\"Polonium\",\"Astatine\",\"Radon\",\"Francium\",\"Radium\",\"Actinium\",\"Thorium\",\"Protactinium\",\"Uranium\",\"Neptunium\",\"Plutonium\",\"Americium\",\"Curium\",\"Berkelium\",\"Californium\",\"Einstenium\",\"Fermium\",\"Mendelevium\",\"Nobelium\",\"Lawrencium\",\"Rutherfordium\",\"Dubnium\",\"Seaborgium\",\"Bohrium\",\"Hassium\",
        \"Meitnerium\",\"Darmstadtium\",\"Roentgenium\",\"Copernicium\",\"Ununtrium\",\"Ununquadium\",\"Ununpentium\",\"Ununhexium\",\"Ununseptium\",\"Ununoctium\"};ArrayAdapter<串GT;适配器;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);    适配器=新ArrayAdapter<串GT;(这一点,android.R.layout.simple_list_item_1,数据);
    最终的EditText搜索栏=(EditText上)findViewById(R.id.searchbar);
    最后DrawerLayout抽屉=(DrawerLayout)findViewById(R.id.drawer_layout);
    最终的ListView navList =(ListView控件)findViewById(R.id.left_drawer);
    最终的LinearLayout的LinearLayout =(的LinearLayout)findViewById(R.id.left_drawer_layout);
    navList.setAdapter(适配器);    sea​​rchBar.addTextChangedListener(新TextWatcher(){        @覆盖
        公共无效onTextChanged(CharSequence的CS,INT ARG1,ARG2 INT,INT ARG3){
            //当用户更改文本
            。MainActivity.this.adapter.getFilter()过滤器(CS);
        }        @覆盖
        公共无效beforeTextChanged(CharSequence的为arg0,ARG1 INT,INT ARG2,
                                      INT ARG3){        }        @覆盖
        公共无效afterTextChanged(编辑为arg0){
        }
    });    navList.setOnScrollListener(新AbsListView.OnScrollListener(){
        公共无效onScrollStateChanged(AbsListView观点,诠释scrollState){
            //隐藏键盘
            InputMethodManager IMM =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(navList.getWindowToken(),0);
        }        公共无效onScroll(AbsListView观点,诠释firstVisibleItem,诠释visibleItemCount,诠释totalItemCount){
        }
    });    navList.setEmptyView(findViewById(R.id.empty));  }
}


解决方案

只是没有执行不尝试在逻辑

  onTextChanged(CharSequence的CS,INT ARG1,ARG2 INT,INT ARG3){       转换CS到字符串与代替空格(),然后MainActivity.this.adapter.getFilter()过滤器(CS)。

I am using an edittext and a listview in my app. I implemented the search functionality and made the edittext a search bar. I am using a TextWatcher to detect changes instantly. But when I type space into the edittext, all the listview items are gone. So, how do I ignore the spaces typed by the user into the edittext?:

public class MainActivity extends FragmentActivity {

final String[] data ={"Hydrogen","Helium","Lithium","Beryllium","Boron","Carbon","Nitrogen","Oxygen","Flourine","Noen","Sodium","Magnesium","Aluminium","Silicon","Phosphorous","Sulphur","Chlorine","Argon","Potassium","Calcium","Scandium","Titanium","Vanadium","Chromium","Manganese","Iron","Cobalt","Nickel","Copper","Zinc","Gallium","Germanium","Arsenic","Selenium","Bromine","Krypton","Rubidium","Strontium","Yttrium","Zirconium","Niobium","Molybdenum","Technetium","Ruthenium","Rhodium","Palladium","Silver","Cadmium","Indium","Tin","Antimony","Tellurium",
        "Iodine","Xenon","Caesium","Barium","Lanthanum","Cerium","Praseodymium","Neodymium","Promethium","Samarium","Europium","gadoliium","Terbium","Dysprosium","Holmium","Erbium","Thulium","Ytterbium","Lutetium","Hafnium","Tantalum","Tungsten","Rhenium","Osmium","Iridium","Platinum","Gold","Mercury","Thallium","Lead","Bismuth","Polonium","Astatine","Radon","Francium","Radium","Actinium","Thorium","Protactinium","Uranium","Neptunium","Plutonium","Americium","Curium","Berkelium","Californium","Einstenium","Fermium","Mendelevium","Nobelium","Lawrencium","Rutherfordium","Dubnium","Seaborgium","Bohrium","Hassium",
        "Meitnerium","Darmstadtium","Roentgenium","Copernicium","Ununtrium","Ununquadium","Ununpentium","Ununhexium","Ununseptium","Ununoctium"};

ArrayAdapter<String> adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
    final EditText searchBar = (EditText) findViewById(R.id.searchbar);
    final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
    final ListView navList = (ListView) findViewById(R.id.left_drawer);
    final LinearLayout linearLayout = (LinearLayout)findViewById(R.id.left_drawer_layout);
    navList.setAdapter(adapter);

    searchBar.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            MainActivity.this.adapter.getFilter().filter(cs);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {

        }

        @Override
        public void afterTextChanged(Editable arg0) {
        }
    });

    navList.setOnScrollListener(new AbsListView.OnScrollListener() {
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            //hide keyboard
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(navList.getWindowToken(), 0);
        }

        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        }
    });

    navList.setEmptyView(findViewById(R.id.empty));

  }
}

解决方案

just a logic not implemented do try in

 onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {

       convert the cs to string replace space(" ") with ""  and then MainActivity.this.adapter.getFilter().filter(cs);

这篇关于忽略空格,而搜索列表视图的android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆