c# - Xamarin Forms Listview selecteditem set backgroundcolor not working first time -
i have customviewrenderer, changes backgroundcolor of item in listview. if click on item color changes correct. when load listview , set programmatically itemsource , selecteditem color standard orange in android. listview.selecteditem doesnt call android renderer "oncellpropertychanged", @ first time loading.
what mistake?
loading listview:
listnew = listdg.where(g => g.check == true).tolist(); listnew = listnew.orderby(g => g.beschreibung).tolist(); listgegenstandzuordnungbinding = new bindinglist<db.gegenstaendezuordnungliste>(listnew); lvgegenstaende.itemssource = listgegenstandzuordnungbinding; lvgegenstaende.itemselected += lvgegenstaende_itemselected; ; if (app.idgegenstandueb != 0) { list<db.gegenstaendezuordnungliste> listselected = listnew.where(g => g.idgegenstandueb == app.idgegenstandueb).tolist(); if (listselected.count > 0) { lvgegenstaende.selecteditem = listselected[0]; } else { if (listnew.count > 0) { lvgegenstaende.selecteditem = listnew[0]; app.idgegenstandueb = listnew[0].idgegenstandueb; } } } else if (listnew.count > 0) { app.idgegenstandueb = listnew[0].idgegenstandueb; lvgegenstaende.selecteditem = listnew[0]; } android renderer:
protected override android.views.view getcellcore(cell item, android.views.view convertview, viewgroup parent, context context) { var listview = parent android.widget.listview; _selected = false; if (listview != null) { // // disable native cell selection color style - set *transparent* listview.setselector(android.resource.color.transparent); listview.cachecolorhint = xamarin.forms.color.transparent.toandroid(); } var cell = base.getcellcore(item, convertview, parent, context); return cell; } protected override void oncellpropertychanged(object sender, propertychangedeventargs e) { base.oncellpropertychanged(sender, e); _selected = !_selected; var extendedviewcell = sender customcontrol; if (extendedviewcell.parent.automationid != null) { if (extendedviewcell.parent.automationid.tostring() == "listgegenstaende") { if (_selected) extendedviewcell.view.backgroundcolor = color.fromhex("4682b4"); else extendedviewcell.view.backgroundcolor = color.fromhex("#5096d0"); } } else { if (_selected) extendedviewcell.view.backgroundcolor = color.black; else extendedviewcell.view.backgroundcolor = color.transparent; } }
Comments
Post a Comment