Android的 - AutoCompleteTextView,showDropDown()并不总是工作 [英] Android - AutoCompleteTextView, showDropDown() doesn't always work
本文介绍了Android的 - AutoCompleteTextView,showDropDown()并不总是工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我试图每次dynamiclly更新autoCompleteTextview ArrayAdapter,如果下拉列表显示该消失,showDropDown()没有任何影响。
When I'm trying to update the autoCompleteTextview ArrayAdapter dynamiclly each time, if the dropdown is shown this disappear and showDropDown() has no effect.
我的code:
@Override
protected void onCreate(Bundle savedInstanceState) {
.................................................
mAutoComepleteTextView = (AutoCompleteTextView)findViewById(R.id.tv_autocomplete_search);
mAutoComepleteTextView.setOnItemClickListener(this);
mAutoComepleteTextView.addTextChangedListener(this);
mArrayAdaptor = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line);
mArrayAdaptor.setNotifyOnChange(false);
mAutoComepleteTextView.setAdapter(mArrayAdaptor);
mAutoComepleteTextView.setOnFocusChangeListener(this);
mAutoComepleteTextView.setOnClickListener(this);
.................................................
}
OnClick事件:
OnClick event:
@Override
public void onClick(View v) {
super.onClick(v);
switch(v.getId()){
case R.id.tv_autocomplete_search:
mAutoComepleteTextView.showDropDown(); // here work fine
break;
default :
break;
}
}
onFocusChange事件:
onFocusChange event:
@Override
public void onFocusChange(View v, boolean hasFocus) {
switch(v.getId()){
case R.id.tv_autocomplete_search:
mAutoComepleteTextView.showDropDown(); // here work fine
break;
default :
break;
}
}
我的回调,这是我的问题:
My callback, here is my problem:
@Override
public void onNewFriends(Vector<Friend> friends) {
super.onNewFriends(friends);
runOnUiThread(new Runnable() {
@Override
public void run() {
boolean isVisible = mAutoComepleteTextView.isPopupShowing();
if(isVisible)
mAutoComepleteTextView.dismissDropDown();
mArrayAdaptor.clear();
for (Friend friend : ActivitiesPrefsData.getInstace().getFriends()) {
if (friend.m_strEmail.equals(D.username)){
mArrayAdaptor.add(friend.m_deviceInfo.m_strName);
}
else
mArrayAdaptor.add(friend.m_strEmail);
}
mArrayAdaptor.notifyDataSetChanged();
if(isVisible)
mAutoComepleteTextView.showDropDown(); // here doesn't work
}
});
}
我将不胜感激任何帮助,谢谢。
I would be grateful for any help, thanks.
推荐答案
我在这里发表我找到了解决办法,重置适配器:
I post here the solution found by me, reset adapter:
@Override
public void onNewFriends(Vector<Friend> friends) {
super.onNewFriends(friends);
runOnUiThread(new Runnable() {
@Override
public void run() {
mArrayAdaptor.clear();
for (Friend friend : ActivitiesPrefsData.getInstace().getFriends()) {
if (friend.m_strEmail.equals(D.username)){
mArrayAdaptor.add(friend.m_deviceInfo.m_strName);
Log.d("java", friend.m_strEmail + " -- " + friend.m_deviceInfo.m_strName);
}
else
mArrayAdaptor.add(friend.m_strEmail);
}
mAutoComepleteTextView.setAdapter(null); //this work
mAutoComepleteTextView.setAdapter(mArrayAdaptor); //for me
}
});
}
这篇关于Android的 - AutoCompleteTextView,showDropDown()并不总是工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文