J'essaie d'utiliser un ListItemComponent personnalisé dans mes cascades mais il l'ignore. Au lieu de dessiner mon Label, en le colorant cyan et en mettant ListItemData.text, il remplit ma liste avec ListItemData.description (mon json a du texte, description, statut et image). You can see screenshot here. Si j'utilise StandardListItem toutes les informations sont affichées correctement.ListView n'utilise pas Custom ListItemComponent
QML:
Page {
Container {
ListView {
id: myListView
dataModel: MyListModel {
id: myListModel
}
listItemComponents: [
ListItemComponent {
type: "listItem"
Container {
id:item
layout: StackLayout {
orientation: LayoutOrientation.LeftToRight
}
Label {
id: text
text: ListItemData.text
textStyle {
color: Color.Cyan
}
}
}
}
]
}
}
onCreationCompleted: {
myListModel.load("app/native/assets/mydata.json")
}
}
C++:
void MyListModel::load(const QString& file_name)
{
bb::data::JsonDataAccess jda;
QVariantList lst = jda.load(file_name).value<QVariantList>();
if (jda.hasError()) {
bb::data::DataAccessError error = jda.error();
qDebug() << file_name << "JSON loading error: " << error.errorType() << ": " << error.errorMessage();
}
else {
qDebug() << file_name << "JSON data loaded OK!";
append(lst);
}
}
QVariant MyListModel::value(int ix, const QString &fld_name)
{
QVariant ret;
if(ix >= 0 && ix < size()) {
QVariantMap curr_val = QVariantListDataModel::value(ix).toMap();
ret = curr_val.value(fld_name);
}
return ret;
}
void MyListModel::setValue(int ix, const QString& fld_name, const QVariant& val)
{
if(ix >= 0 && ix < size()) {
QVariantMap curr_val = QVariantListDataModel::value(ix).value<QVariantMap>();
curr_val[fld_name] = val;
replace(ix, curr_val);
}
}
Quelqu'un peut-il ajouter "ListItemComponent" aux balises s'il vous plaît, je n'ai pas assez de rep. –