Materialdrawer: Aktualisieren der Beschreibung eines PrimaryDrawerItem

Erstellt am 3. Mai 2019  ·  12Kommentare  ·  Quelle: mikepenz/MaterialDrawer

Ich benutze den MaterialDrawer sozusagen als Einkaufswagen, alles ist perfekt, das einzige Problem, das ich habe, ist, wenn ich versuche, die Beschreibung eines Artikels zu aktualisieren, wie ich gesehen habe, kann nur das Bad, der Name oder der Name aktualisiert werden das Symbol, aber nicht die Beschreibung, kann ich die Beschreibung irgendwie aktualisieren? In der Zwischenzeit lösche ich das Element und füge es einfach wieder hinzu, aber das ist kein effizienter Weg, und das Element ändert die Position an die letzte Stelle.
image

question

Alle 12 Kommentare

In der Zwischenzeit lösche ich den Artikel und füge ihn an derselben Stelle wieder hinzu, im Moment keine Probleme

https://github.com/mikepenz/MaterialDrawer#modify -items-or-the-drawer

Sie können das Element ändern und dann die Schublade über das Update benachrichtigen:

//modify an item of the drawer
item1.withName("A new name for this drawerItem").withBadge("19").withBadgeStyle(new BadgeStyle().withTextColor(Color.WHITE).withColorRes(R.color.md_red_700));
//notify the drawer about the updated element. it will take care about everything else
result.updateItem(item1);

` SecondaryDrawerItem Precio = new SecondaryDrawerItem()
.withBadge("RD$" + producto.getPrecio())
.withName("Precio")
.mitAuswählbar(falsch)
.withTag("Sek");

    SecondaryDrawerItem ITBIS = new SecondaryDrawerItem()
            .withBadge("RD$" + producto.getITBIS())
            .withName("ITBIS")
            .withSelectable(false)
            .withTag("Sec");

    SecondaryDrawerItem Desc = new SecondaryDrawerItem()
            .withBadge("RD$" + producto.getDesc())
            .withName("Descuento")
            .withSelectable(false)
            .withTag("Sec");
    double total = producto.getPrecio() + producto.getITBIS() - producto.getDesc();

    PrimaryDrawerItem newItem = new PrimaryDrawerItem()
            .withIdentifier((long) productos.indexOf(producto))
            .withSubItems(Precio, ITBIS, Desc)
            .withName("" + producto.getNombre())
            .withDescription(producto.getCant() + "")
            .withBadge(total + "").withBadgeStyle(new BadgeStyle().withTextColor(Color.WHITE).withColorRes(R.color.md_red_700));
    drawer.addItemAtPosition(newItem, pos + 1);

`
Wie Sie in meinem Code sehen können, füge ich jedes Element dynamisch hinzu, also ist es eine Art Array. Ich rufe einfach die Methode add item auf und übergebe einige Attribute und das wars, das Problem ist das Abrufen dieser Daten

@lcapellanWork Wenn Sie dann Änderungen

Alternativ könnten Sie den Artikeln eine eindeutige Kennung geben und den Artikel über die Kennung abrufen und dasselbe tun:
https://github.com/mikepenz/MaterialDrawer/blob/develop/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java#L429

Oder Sie aktualisieren einfach das Element an der Position mit einem neuen Element:
https://github.com/mikepenz/MaterialDrawer/blob/develop/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java#L712

Danke für die Hilfe, ich benutze das Update-Element an Position und es funktioniert, aber jetzt glaube ich, dass ich einen neuen Fehler gefunden habe, oder vielleicht mache ich etwas falsch, wie Sie an meinem Code sehen, habe ich Unterelemente, wenn ich ein hinzufüge neuer Artikel, wenn ein Artikel in der Schublade geöffnet ist, wird der Unterartikel hinzugefügt, aber nicht der Artikel.
image

es sollte ein neues Primärelement mit 4 Unterelementen geben, aber das neue Primärelement wird nie hinzugefügt und es gibt nur 4 neue Unterelemente ohne ein übergeordnetes Primärelement.

In der Zwischenzeit habe ich eine wirklich nicht so speicherfreundliche Lösung, lösche alle Elemente und lade sie erneut, da ich alle Daten in einem Array speichere, habe ich versucht, die Benachrichtigung zu verwenden, aber es gibt mir eine Art des Threadfehlers.

Kannst du die Unterpunkte bitte etwas genauer beschreiben?

Sie ändern die Unterposition oder nur eine Position?

Vielleicht können Sie v7.0.0-rc01 ausprobieren, das mit dem fastAdapter v4 geliefert wird, der dieses Problem behebt

@mikepenz gibt es eine Möglichkeit, ProfileDrawerItem auf v7.0.0-rc01 zu aktualisieren? Ich scheitere mit:

drawer?.updateName(1, StringHolder("Test"))

sieht so aus, als ob ProfileDrawerItem nicht Nameable , um eine solche Aktion auszuführen. Ihr Link hier ist nicht mehr gültig: https://github.com/mikepenz/MaterialDrawer/issues/2429#

Entschuldigung, dass ich diese Frage unter diesem Ticket stelle, aber ich denke, das könnte irgendwie zusammenhängen.

Kannst du die Unterpunkte bitte etwas genauer beschreiben?

Sie ändern die Unterposition oder nur eine Position?

Vielleicht können Sie v7.0.0-rc01 ausprobieren, das mit dem fastAdapter v4 geliefert wird, der dieses Problem behebt

Wie Sie sehen können, können wir beim Hinzufügen eines neuen PrimaryItems SecondaryItems als Unterelemente hinzufügen. Gibt es eine Möglichkeit, das übergeordnete Element zu löschen und dann die Unterelemente mit dem übergeordneten Element zu löschen?

@lcapellanWork Die einfachste und beste Lösung hierfür besteht darin, das erweiterte Element einfach zu

@lcapellanWork Die einfachste und beste Lösung hierfür besteht darin, das erweiterte Element einfach zu

Mhmm werde das jetzt mal versuchen, vielen Dank für die Hilfe.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen