如何更新用于在 MultiAutoCompleteTextView 中存储 KEY 的 ArrayList

How to update ArrayList used to store KEY in MultiAutoCompleteTextView

我在我的应用程序中应用了 MultiAutoCompleteTextView。大多数功能可能被视为电子邮件应用程序的接收框。我使用带有 hashMap 的自定义适配器来存储 Name 和 Id 作为建议的来源。当用户单击建议的名称时(只有名称会显示在建议列表中),Id 将以编程方式添加 ID_list(arrayList) 以进行下一次操作。

问题是,用户可能会点击错误或改变主意

1) 当用户删除 MultiAutoCompleteTextView 中的某些名称时,我如何更新 arrayList(ID_list) ??

2) 如何通过一次退格键删除一个项目(在 multiaautocompletetextview 中)而不是通过一个字符删除一个字符??

非常感谢。

嗯,我意识到"simplization"的重要性了。

  1. 使用 TextWatcher 更新 arrayList(ID_list);

    inputReceiver.addTextChangedListener(新的 TextWatcher() { 私人诠释 noOfCharAdded = 0; 私人 int noOfCharDeleted = 0;

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            noOfCharAdded = after;
            noOfCharDeleted = count;
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            KEY_MAC = null;
        }
    
        @Override
        public void afterTextChanged(Editable s) {
    
            if (noOfCharAdded >= 1 && noOfCharDeleted > 1) {
                // just input select and backspace
                System.out.println("just input select and backspace "
                        + receiverList.size());
                receiverList.remove(receiverList.size() - 1);
            }
    
        }
    });
    
  2. 使用 onClickListener 将光标设置为字符串结尾;

    inputReceiver.setOnClickListener(新的 OnClickListener() {

        @Override
        public void onClick(View v) {
            inputReceiver.setSelection(inputReceiver.getText().length());
        }
    });