更新有关自动填充textview项目单击的建议

时间:2016-05-18 07:41:31

标签: android android-arrayadapter autocompletetextview

我已经实现了一个自动填充textview.I已经配置它,每次我点击自动完成textview我出现的建议。一切正常,除了我从列表中选择的东西后建议没有更新这是我的代码:

    arrayAdapter = new ArrayAdapter<>(
            HomeActivity.this, android.R.layout.simple_dropdown_item_1line, array);

    textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTV);
    textView.setAdapter(arrayAdapter);
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View arg0) {

            textView.showDropDown();

        }
    });
    textView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
          arrayAdapter.notifyDataSetChanged();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

例如,如果我有像{“a”,“abvc”,“ajedghed”,“b”,“bdvhd”,“bwgdydg”,“c”,“cswjwwd”}这样的字符串数组 我键入b,它显示所有相关的建议,“b”,如“b”,“bdvhd”,“bwgdydg”。这工作正常,但如果我选择任何建议,再次单击自动完成textview它仍然显示以前的结果下拉在所有b上。

我尝试在项目点击时添加notifyDataSetChanged()但没有运气。

2 个答案:

答案 0 :(得分:1)

我了解当您从下拉列表中单击文本时,您希望autoComplete建议根据您选择的新文本进行更改。要实现这一点,您需要扩展autoCompleteTextView类,然后覆盖 replaceText(),然后在onItemSelected中调用textView.replaceText((String)adapterView.getItemAtPosition(i));

类似的东西:

Step1 :覆盖AutoCompleteTextView

public class AutoComplete extends AutoCompleteTextView {

public AutoComplete(Context context) {
    super(context);
}

public AutoComplete(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public AutoComplete(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

public AutoComplete(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
}

@Override
protected void replaceText(CharSequence text) {
    super.replaceText(text);
}

}

Step2 :更改你的xml中的autoCompleteTextView以使用创建的

 <com.example.tester.AutoComplete
        android:id="@+id/autocomplete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:completionThreshold="1"

/>

Step3 在您的代码中添加replaceText,如下所示:

final String [] array={"a", "abvc", "ajedghed", "b", "bdvhd", "bwgdydg", "c", "cswjwwd",
            "ssehdk","chakra"};
    final AutoComplete textView=(AutoComplete) findViewById(R.id.autocomplete);
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            textView.showDropDown();
        }
    });
    if (textView!=null)
    textView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,array));

    textView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            textView.replaceText((String)adapterView.getItemAtPosition(i));
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

答案 1 :(得分:0)

尝试在用户再次点击时执行此类操作,以便textview不包含任何文本,并且适配器会返回列表中的所有项目。

    if(textView.getText().toString() != null && textView.getText().toString().trim() != "")  {
        textView.setText(null);
    }