自动完成文本视图强制显示所有项目

2022-09-02 11:18:01

在我的应用中,有一个时刻,我需要强制显示建议列表中的所有项目,无论用户键入了什么。我该怎么做?

我试图用过滤做一些事情,但对我来说,作为一个初学者,过滤太复杂了,我尝试搜索初学者教程进行过滤,没有任何运气。也许,有一种更简单的方法来强制显示所有建议项目?

编辑:基本上我的想法是,当用户键入列表中没有的内容时,它会显示他可以拥有的所有可用选项。

我发现检查天气的最佳方法是ACTV是否显示,但是在TextChangeEvent上,我将用户键入的文本与我的列表进行比较,然后如果没有找到任何元素,则显示完整列表。

public void onTextChanged(CharSequence s, int start, int before, int count)
         {                
           final EditText editText = (EditText) findViewById(R.id.vardsUserInput);
            String strValue = editText.getText().toString().toUpperCase();
            String temp;
            int Cc=0; //my count variable
            for(int i=0; i<vardi.length; i++)
            {
                temp = vardi[i].toUpperCase();
                if(temp.startsWith(strValue.toUpperCase()))
                {
                    Log.d("testing",vardi[i]);
                    Cc++;                                                   
                }
            }               
        if(Cc == 0)
        {
        //Show all the available options
    textView.showDropDown();                    
         }                  
}

答案 1

当你想要显示所有结果时,你没有定义“时刻”,所以我希望这适合。但是试试这样的东西:

AutoCompleteTextView autoComplete;
String savedText;

public void showAll() {
    savedText = autoComplete.getText().toString();
    autoComplete.setText("");
    autoComplete.showDropDown();
}

public void restore() {
    autoComplete.setText(savedText);
}

答案 2

这对我来说非常有效,这是解决问题的简单方法:

final ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_dropdown_item_1line, usernameLists);
    etUsername.setThreshold(1);
    etUsername.setAdapter(adapter);
    etUsername.setOnTouchListener(new View.OnTouchListener() {

        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
            if (usernameLists.size() > 0) {
                // show all suggestions
                if (!etUsername.getText().toString().equals(""))
                    adapter.getFilter().filter(null);
                etUsername.showDropDown();
            }
            return false;
        }
    });

推荐