Nativescript RadListView: Как программно изменить цвет фона для выбранного элемента? - PullRequest
0 голосов
/ 15 декабря 2018

Делая это программно в коде позади (без привязки к XML), все работает, кроме моего цвета фона, который не отображается при выборе элемента.Нет ошибок, и мои изображения отображаются нормально.Что запуталось в моем коде?(Спасибо!)

Я бегу {N} CLI "tns-android":"version": "3.4.2", "nativescript-ui-listview": "3.5.1".

<GridLayout columns="auto, *">
    <StackLayout col="0" id="containers">
    </StackLayout>
    <StackLayout col="1" id="notes">
    </StackLayout>
</GridLayout>


function setContainers() {
    myCntnrPics.forEach(function (element) { // Need to it in ObservableArray
        pathToCntnrBitmapsArray.push(element);
    });

    let radListLeft = new listview.RadListView();
    // iOS NEEDS height set
    radListLeft.height = 2000;
    radListLeft.items = pathToCntnrBitmapsArray;
    let gridLayout = new listview.ListViewGridLayout();
    gridLayout.scrollDirection = "Vertical";
    radListLeft.selectionBehavior = "Press";
    radListLeft.itemSelected = "selected";
    radListLeft.on("itemSelected", function (ListViewEventData) {
        const item = pathToCntnrBitmapsArray.getItem(args.index);
        item.selected = true;
        console.log("itemSelected is true -----"); // This does not show up
    });
    radListLeft.on("itemTap", function (element){
        var selectedItemPath = pathToCntnrBitmapsArray.getItem(element.index).toString();
        console.log("on itemTap selectedItemPath: " + selectedItemPath); // shows correctly
    });
    if (application.android) {
        // Android needs H & W
        radListLeft.itemTemplate = "<StackLayout backgroundColor='{{ selected ? 'red' : 'white'}}'><Image src='{{ $value }}' height='123' width='123' loadMode='async' class='items'/></StackLayout>";
    } else if (application.ios) {
        radListLeft.itemTemplate = "<StackLayout backgroundColor='{{ selected ? 'red' : 'white'}}'><Image src='{{ $value }}' class='items'/></StackLayout>";
        gridLayout.itemHeight = 123;
        gridLayout.itemWidth = 123;
    }
    gridLayout.spanCount = 1;
    radListLeft.listViewLayout = gridLayout;
    let myContainers = page.getViewById("containers");
    myContainers.removeChildren();
    myContainers.addChild(radListLeft);
}
...