更新自动完成文本视图项目点击的建议
Update suggestions on autocomplete textview item click
我已经实现了一个自动完成功能 textview.I 已将其配置为每次我单击自动完成文本视图时我都会显示 suggestions.Everything 工作正常,除了建议在我之后没有更新select编辑了 list.Here 中的内容是我的代码:
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"。这工作正常,但如果我 select 任何建议然后再次单击自动完成文本视图,它仍然显示所有 b 的先前结果下拉列表。
我尝试在项目点击时添加 notifyDataSetChanged() 但没有成功。
尝试在用户再次单击时执行类似操作,以便文本视图不包含任何文本和适配器 returns 列表中的所有项目。
if(textView.getText().toString() != null && textView.getText().toString().trim() != "") {
textView.setText(null);
}
我了解到,当您从下拉列表中单击文本时,您希望自动完成建议根据您选择的新文本进行更改。为此,您需要扩展 autoCompleteTextView class,然后覆盖 replaceText(),然后在您的 onItemSelected 中调用 textView.replaceText((String)adapterView.getItemAtPosition(i));
像这样:
步骤 1: 覆盖 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);
}
}
第 2 步:更改 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) {
}
});
我已经实现了一个自动完成功能 textview.I 已将其配置为每次我单击自动完成文本视图时我都会显示 suggestions.Everything 工作正常,除了建议在我之后没有更新select编辑了 list.Here 中的内容是我的代码:
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"。这工作正常,但如果我 select 任何建议然后再次单击自动完成文本视图,它仍然显示所有 b 的先前结果下拉列表。
我尝试在项目点击时添加 notifyDataSetChanged() 但没有成功。
尝试在用户再次单击时执行类似操作,以便文本视图不包含任何文本和适配器 returns 列表中的所有项目。
if(textView.getText().toString() != null && textView.getText().toString().trim() != "") {
textView.setText(null);
}
我了解到,当您从下拉列表中单击文本时,您希望自动完成建议根据您选择的新文本进行更改。为此,您需要扩展 autoCompleteTextView class,然后覆盖 replaceText(),然后在您的 onItemSelected 中调用 textView.replaceText((String)adapterView.getItemAtPosition(i));
像这样:
步骤 1: 覆盖 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);
}
}
第 2 步:更改 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) {
}
});