【问题标题】:Set predefined values to MultiAutoCompleteTextView : Android [closed]将预定义值设置为 MultiAutoCompleteTextView :Android [关闭]
【发布时间】:2013-08-26 11:29:53
【问题描述】:

我必须将一些预定义的值设置为MultiAutoCompleteTextView(在我从建议下拉列表中选择之前)。就像您从下拉列表中选择了 2-3 个项目一样。设置这些预定义值后,我想再次从列表中继续正常的过滤过程并将其添加到MultiAutoCompleteTextView

应该是这样的

Predefined1, Predefined2, Predefined3,  

如果我像使用 TextViewEditText 一样使用一些逗号分隔值执行 setText(...),它会将其视为 1 个完整单词并在末尾添加一个逗号。

请建议我如何实现它。

编辑:

好的。让我详细解释一下。我试图在thisthis 中实现类似的目标。但是,一个额外的要求是,除了从建议下拉列表中选择值外,我还需要在显示视图时设置一些预定义值,当我写一些东西并按下回车/隐藏键盘时,我写的任何内容都应该转换为按钮文本。 如果不可能,还有其他选择吗?请提出建议。

编辑:

这些值应该在视图中,无需从下拉列表中选择。稍后,无论用户从建议下拉列表中添加什么,这些也应该添加到列表中。

这就像在用户开始输入之前将提示或一些文本设置为EditText

谢谢。

【问题讨论】:

  • 请不要让我的 50 声望连续第二次浪费:(
  • 所以,为了确保我理解正确,您需要使用某些值以及要添加的用户类型的任何其他值来初始化下拉自动完成列表视图吗?
  • 除此之外,这些预定义的值在初始化时需要在 MultiAutoCompleteTextView 中。附上一张示例图片。请看一下

标签: java android autocomplete android-widget custom-controls


【解决方案1】:

尝试以下方法:

   ArrayList<String> data=new ArrayList<String>();
    data.add("Predefined1");
    data.add("Predefined2");
    data.add("Predefined3");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                     android.R.layout.simple_dropdown_item_1line, data.toArray());
             MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(/*View id*/);

MultiAutoCompleteTextView.CommaTokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer();

             textView.setAdapter(adapter);
             textView.setTokenizer(tokenizer);

    textView.setOnEditorActionListener(new TextView.OnEditorActionListener(){
     @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                data.add(v.getText().toString());
                adapter.notifyDataSetChanged();
                return true;    
            }
            return false;
        }

    });

textView.setText("Predefined1,");
tokenizer.terminateToken("Predefined1");


textView.setText(textView.getText().toString()+"Predefined2,");
tokenizer.terminateToken("Predefined2");

textView.setText(textView.getText().toString()+"Predefined3,");
tokenizer.terminateToken("Predefined3");

【讨论】:

  • 感谢您的回答。我会试试的。
  • 我已经编辑了我的问题。请看一下。
  • 试试修改后的代码。
  • 编辑的解决方案有效!。我已经很长时间了。非常感谢。有一些修改。我会照顾他们的。在这里你得到赏金:)
  • 嗨 Mohamed,设置文本工作正常。我还有 1 个问题。与该链接一样,在添加预定义文本时,使用边框 n 十字按钮包装该文本不起作用。如果你能看一下,那对我很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
相关资源
最近更新 更多