如何在android中找到具有或不具有值的数组

时间:2016-03-10 07:21:16

标签: android autocompletetextview

我在我当前的项目中使用AutoCompleteTextView

详细信息:

当用户在AutoCompleteTextView中键入数据时,我正在检查arrayList中的数据是否!!

为此我尝试下面的代码,但它没有工作它显示数组中没有数据。

任何人都可以帮忙解决这个问题吗?

我想要的是什么:

当用户键入一个字母(如果与arrayList匹配)时,我必须显示具有此字母的arrayList。

示例如果用户输入:M或Me或Ve;然后它显示有这些数据的数组列表。

这是我的代码: -

 String[] planets = new String[] { "Mercury","Mercury", "Venus", "Earth", "Mars",
            "Jupiter", "Saturn", "Uranus", "Neptune"};

autoCompleteTextView.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) {

                Log.i("--------->1", "onTextChanged is +"+autoCompleteTextView.getText());

                if (Arrays.asList(planets).contains(autoCompleteTextView.getText())) {

                    Log.i("--------->1", "Having");

                }else{

                    Log.i("--------->1", "No");
                }

            }

            @Override
            public void afterTextChanged(Editable s) {

                Log.i("--------->1", "afterTextChanged is +"+autoCompleteTextView.getText());

                if (Arrays.asList(planets).contains(autoCompleteTextView.getText())) {

                    Log.i("--------->1", "Having");

                }else{

                    Log.i("--------->1", "No");
                }
            }
        });

3 个答案:

答案 0 :(得分:0)

您可以在下面进行测试:

Arrays.asList(行星)。载(autoCompleteTextView.getText()。的toString())

此外,无需在afterTextChanged(可编辑的s)中编写代码。

onTextChanged(CharSequence s,int start,int before,int count)已经足够了。

答案 1 :(得分:0)

这是如何在尝试破解视图之前使用AutoCompleteTextView,阅读其应如何

使用的文档:

http://developer.android.com/reference/android/widget/AutoCompleteTextView.html

答案 2 :(得分:0)

试试这个解决方案:
在listSearchedPlanets中,您将获得包含在AutoCompleteTextView中输入的字符串的行星列表。

        autoCompleteTextView.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) {

            List<String> listPlanets = Arrays.asList(planets);

            List<String> listSearchedPlanets = new ArrayList<>();

            for (int i = 0; i < listPlanets.size(); i++) {

                if (listPlanets.get(i).contains(autoCompleteTextView.getText())) {
                    listSearchedPlanets.add(listPlanets.get(i));
                }

            }

            if (listSearchedPlanets.size() > 0) {
                Log.i("--------->1", "Having");
            }else {
                Log.i("--------->1", "No");
            }


        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });