我希望在用户点按文字输入时显示最后'n'个条目的列表。 我该怎么办?
现在我正在扩展EditText,并使用'x'按钮清除其内容。所以,我的想法是将此功能合并到这个小部件
答案 0 :(得分:0)
@pskink的评论让我按照正确的方式
首先,必须重新实现 AutoCompleteTextView
public class QuickSayAutoComplete extends AutoCompleteTextView {
private Context ctx;
public QuickSayAutoComplete(Context context) {
super(context);
ctx = context;
init();
}
public QuickSayAutoComplete(Context context, AttributeSet attrs) {
super(context, attrs);
ctx = context;
init();
}
public QuickSayAutoComplete(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
ctx = context;
init();
}
要添加最后引入的元素,必须添加 ClickListener 。
this.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
String text = getText().toString();
// The text is not empty
if ( (!text.matches("")) && (text.length() > 0)) {
// The last element introduced will be the first
ArrayAdapter<String> adapter = (ArrayAdapter<String>) getAdapter();
adapter.remove(text);
adapter.insert(text, 0);
}
}
});
ACTV的适配器必须是ArrayList,如果不是,we cannot remove elements
String[] array = {"Hello", "Good Morning", "Nice to see you"};
ArrayList<String> greetings = new ArrayList<String>();
greetings.addAll(Arrays.asList(array));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_dropdown_item_1line, greetings);
setAdapter(adapter);
setThreshold(0);
最后,当用户触摸ACTV and there is not text input yet时,会显示DropDown列表(包含所有条目)。当用户引入输入时,列表变短。如果我们可以限制此点中显示的条目数
,这可能是完美的// TouchListener to show the list without user input
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
showDropDown();
return false;
}
});