Titanium, Android, ListView с searchView в actionBar, как?

Я не могу понять, как использовать Ti.UI.Android.createSearchView, встроенный в панель действий с ListView. Мой код:

var win = Ti.UI.createWindow({
    backgroundColor: 'blue',
    fullscreen: false,
    title: 'Productos'
});

var search;
var searchAsChild = false;

if (Ti.Platform.name == 'android' && Ti.Platform.Android.API_LEVEL >= 11) {
    // Use action bar search view
    search = Ti.UI.Android.createSearchView({
        hintText: "Table Search"
    });

    win.activity.onCreateOptionsMenu = function(e) {
        var menu = e.menu;
        var menuItem = menu.add({
            title: 'Table Search',
            actionView : search,
            icon: (Ti.Android.R.drawable.ic_menu_search ? Ti.Android.R.drawable.ic_menu_search : "my_search.png"),
            showAsAction: Ti.Android.SHOW_AS_ACTION_IF_ROOM | Ti.Android.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
        });
    };
}
else {
    // Use search bar
    search = Ti.UI.createSearchBar({
        hintText: "Table Search"
    });
    searchAsChild = true;
}

search.addEventListener('cancel', function(){
    search.blur();
});

var listView = Ti.UI.createListView({searchView: search, caseInsensitiveSearch: true});

var listSection = Ti.UI.createListSection();
var fruits = ['Papaya', 'Peach', 'Pear', 'Persimmon', 'Pineapple', 'Pluot', 'Pomegranate'];
var data = [];
for (var i = 0; i < fruits.length; i++) {
    data.push({
        properties: {title: fruits[i], searchableText: fruits[i]}
    });
}
listSection.setItems(data);

listView.sections = [listSection];

win.add(listView);

win.open();

и в логах появляется:

[ERROR] MenuProxy: (main) [6091237,6100945] View already has a parent. Can't add it as an action view

И на устройстве появляется значок поиска на панели действий, но если я нажму на него, ничего не произойдет. И появляется еще один значок поиска в заголовке listView, и когда я нажимаю на него, появляется текстовое поле для поиска.




Если я реализую тот же список с помощью TableView, он работает нормально!

благодарю вас!!


person Pablo B.    schedule 16.01.2014    source источник
comment
Привет, удалось это исправить? Я борюсь с той же проблемой :(   -  person user1788175    schedule 28.09.2014


Ответы (1)


Вы добавили поиск как searchView в ListView. Просто удалите свойство searchView при создании ListView. Для поиска в ListView необходимо использовать listview.searchText. Требуется строка. Вы можете добавить прослушиватель изменений в searchView, чтобы установить этот searchText. Я не проверял это, но если хотите, я могу предоставить фрагмент кода.

person manumaticx    schedule 19.01.2014
comment
Это работает для меня. У меня есть TabGroup, и одно окно имеет вид списка. Я изо всех сил пытался сделать фильтр просмотра списка. Это работает как шарм. Спасибо - person Wikki; 17.08.2017