Ето моя проблем:
В моето приложение за Android използвам AutoCompleteTextView иОбновете списъка с елементи за всеки 5 секунди. Обновяването работи, когато се обадя на notifyDataSetChanged (). Но когато пиша тук нещо и това ще ми даде списък на съвпадащи елементи и след това го затворя ръчно, когато друга нишка опреснява списъка и извиква падащия списък notifyDataSetChanged () се показва автоматично (дори ако го затворих преди). И наистина е досадно, защото ако списъкът е дълъг, той отнема цял екран и след затварянето му ще се появи в още 5 секунди. Опитах се да отхвърля () веднага след извикването на notifyDataSetChanged (), но няма никакъв ефект. Изглежда, че падащото меню се показва с малко закъснение. Това също не е добър начин да се поправи, защото ако потребителят не е затворен списъкът ще се затвори след опресняване. Също така се опита да се фокусира далеч - все още няма ефект.
Така че имам нужда от метод за: актуализирайте списъка с моите елементи (чрез notifyDataSetChanged ()), без да показва автоматично падащия списък, но ако вече е показано, не го затваряйте.
Надявам се да помогнете,
наздраве
Накрая го направих. Публикувам тук решение, може би някой ще използва това.
За да проверите дали падащото меню е видимо:
final boolean isVisible = autocomplete.isPopupShowing();
След това извикайте notifyDataSetChanged (),
И накрая:
new Handler().post(new Runnable(){
@Override
public void run() {
if(!isVisible){
autocomplete.dismissDropDown();
}
}
});
Това работи перфектно.
Отговори:
0 за отговор № 1Имам и този проблем, мисля, че изглежда да е бъг, аз реших това по следния начин
Преди всичко задайте свойството за фокусиране с AutoCompleteTextView на false.
Второ променете фокусиращото свойство на AutoCompleteTextView на true в onTouch събитие на този изглед.
Когато докосвате товаAutoCompleteTextView, трябва да промените фокусиращото свойство, за да е истинско, иначе да го фокусирате в false. Така че падащият списък никога не се появява, когато изгледът е в състояние, което не може да се отвори.
Тя показва падащия списък автоматично, само когато изгледът е във фокусно състояние, което е досадно за потребителя, в противен случай работи добре.