Materialdrawer: تحديث وصف PrimaryDrawerItem

تم إنشاؤها على ٣ مايو ٢٠١٩  ·  12تعليقات  ·  مصدر: mikepenz/MaterialDrawer

أنا نوع من استخدام MaterialDrawer كعربة تسوق ، كل شيء مثالي ، والمشكلة الوحيدة التي أواجهها هي عند محاولة تحديث وصف عنصر ، كما رأيت ، يمكن فقط تحديث العلامة أو الاسم أو الرمز ، ولكن ليس الوصف ، هل هناك طريقة يمكنني من خلالها تحديث الوصف؟ في غضون ذلك ، أقوم بحذف عنصر de وإضافته مرة أخرى فقط ، ولكنها ليست طريقة فعالة ، ويقوم العنصر بتغيير موضعه إلى آخر مكان.
image

question

ال 12 كومينتر

في غضون ذلك ، أقوم بحذف العنصر وإضافته مرة أخرى في نفس الموضع ، ولا توجد مشاكل في الوقت الحالي

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

يمكنك تغيير العنصر ، ثم إخطار الدرج بالتحديث:

//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")
.withSelectable (false)
.withTag ("Sec") ؛

    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);

"
كما قد ترى في الكود الخاص بي ، أقوم بإضافة كل عنصر ديناميكيًا ، لذا فهو نوع من المصفوفة ، أنا فقط اتصل بالطريقة إضافة عنصر وتمرير بعض atributtes وهذا كل شيء ، المشكلة هي استرداد تلك البيانات

lcapellanWork عندما تحتاج إلى تعديل ، أوصي بشدة إما بالاحتفاظ بالإشارة إلى العنصر وتعديل الكائن ، ثم إخطار الدرج بالتغيير.

بدلاً من ذلك ، يمكنك إعطاء العناصر معرفًا فريدًا واسترداد العنصر عبر المعرف والقيام بنفس الشيء:
https://github.com/mikepenz/MaterialDrawer/blob/develop/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java#L429

أو ستقوم فقط بتحديث العنصر في الموضع بعنصر جديد:
https://github.com/mikepenz/MaterialDrawer/blob/develop/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java#L712

شكرًا للمساعدة ، أستخدم عنصر التحديث في الموضع وهو يعمل ، لكنني أعتقد الآن أنني وجدت خطأً جديدًا ، أو ربما أفعل شيئًا خاطئًا ، كما ترى في الكود الخاص بي ، لدي عناصر فرعية ، عندما أقوم بإضافة عنصر جديد ، إذا كان عنصر في الدرج مفتوحًا ، فسيتم إضافة العنصر الفرعي ، ولكن ليس العنصر.
image

يجب أن يكون هناك عنصر أساسي جديد يحتوي على 4 عناصر فرعية ، ولكن لا يتم إضافة العنصر الأساسي الجديد مطلقًا وهناك 4 عناصر فرعية جديدة فقط بدون عنصر أساسي أصلي.

في غضون ذلك ، لدي حل غير مناسب للذاكرة حقًا ، وحذف جميع العناصر ، وأعد تحميله مرة أخرى لأنني أحفظ جميع البيانات في مصفوفة ، وحاولت استخدام الإخطار ، لكنه يعطيني نوعًا ما من خطأ الموضوع.

هل يمكنك أن تكون أكثر تحديدًا فيما يتعلق بالعناصر الفرعية؟

قمت بتغيير العنصر الفرعي أو قمت بتغيير عنصر فقط؟

ربما يمكنك التحقق من v7.0.0-rc01 الذي يأتي مع fastAdapter v4 والذي قد يحل هذه المشكلة

mikepenz هل هناك أي طريقة لتحديث ProfileDrawerItem على v7.0.0-rc01 ؟ أنا أفشل في:

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

يبدو أن ProfileDrawerItem ليس Nameable لتنفيذ مثل هذا الإجراء. الرابط هنا لم يعد صالحًا بعد الآن: https://github.com/mikepenz/MaterialDrawer/issues/2429#

آسف لطرح هذا السؤال تحت هذه التذكرة ، لكنني أعتقد أن هذا قد يكون ذا صلة نوعًا ما.

هل يمكنك أن تكون أكثر تحديدًا فيما يتعلق بالعناصر الفرعية؟

قمت بتغيير العنصر الفرعي أو قمت بتغيير عنصر فقط؟

ربما يمكنك التحقق من v7.0.0-rc01 الذي يأتي مع fastAdapter v4 والذي قد يحل هذه المشكلة

كما قد ترى ، عندما نضيف PrimaryItem جديدًا ، يمكننا إضافة SecondaryItems كعناصر فرعية ، المشكلة هي عندما أحذف العنصر الرئيسي ، في هذه الحالة ، العنصر الأساسي ، والعناصر الفرعية (SecondaryItems) لا ، وتبقى عائمة هناك. هل هناك طريقة لحذف العنصر الرئيسي ثم حذف العناصر الفرعية مع الأصل؟

lcapellanWork الحل الأبسط والأفضل لهذا هو ببساطة طي العنصر الموسع وإزالة الأصل بعد ذلك.

lcapellanWork الحل الأبسط والأفضل لهذا هو ببساطة طي العنصر الموسع وإزالة الأصل بعد ذلك.

سأحاول ذلك الآن ، شكرًا جزيلاً على المساعدة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

jehad-suliman picture jehad-suliman  ·  3تعليقات

kakai248 picture kakai248  ·  4تعليقات

armoun picture armoun  ·  3تعليقات

y2kshane picture y2kshane  ·  4تعليقات

HanderWei picture HanderWei  ·  3تعليقات