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

时间:2015-05-30 07:32:22

标签: android textwatcher multiautocompletetextview

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

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

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

2)如何删除一个项目(在multiautocompletetextview中),只有一个Backspace单击而不是一个字符?

非常感谢。

1 个答案:

答案 0 :(得分:0)

嗯,我意识到“简化”的重要性。

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

    inputReceiver.addTextChangedListener(new TextWatcher(){         private int noOfCharAdded = 0;         private 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(new OnClickListener(){

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