والله أمبرمج
أخويا طول ما أنت شغال في برمجة الأندرويد بتشوف العجايب زي المثال البسيط اللي
أنا هاحكي عنه دا (ملاحظة: هذا ليس درس تعليمي إنما دي فضفضة مع إخواني المبرمجين :)
التطبيق اللي أنا شغال فيه حاليا يقوم بتقسيم أسماء الهاتف حسب شبكات المحمول ويقوم بعرضهم في
قوائم مختلفة حسب نوع الشبكة، وفي تصميم التطبيق جعلنا كل قائمة (ListView) لها ألوان مختلفة تتفق مع
الألوان المشهورة عن كل شبكة محمول لدينا في مصر، وطبعا عشان أعدل في صفوف القائمة
بما يناسب التطبيق لازم أستخدم (Adapter)
وبداخل كلاس الأدابتر بحدد شكل كل عنصر (View) حسب كود الشبكة يعني لو مثلا قايمة فودافون لون بيانات الإسم
بيكون أحمر وهكذا.
في الإصدار
التاني من التطبيق أضفت ميزة إنه لو الرقم مسبوق بكود نفس الدولة (مصر مثلا)
بيتجاهله ويضيف الرقم حسب نوع الشبكة بدل من أنه كان بيضيف كل الأرقام الدولية
(حتى لو من نفس دولة المستخدم) في قائمة منفصلة عن شبكات المحمول، ولغاية دلوقتي
الدنيا ماشية كويس.
وبعدين كان فيه
مشكلة صغيرة ظهرت على بعض أجهزة المستخدمين وهي إن الخلفية بتاعت القائمة مش بتكون
كاملة لو الأسماء قليلة بحيث أنها لا تملء الشاشة (مثلا عند إستخدام ميزة البحث بالاسم)
فببساطة قررت إن أغير خاصية (attribute)
الطول بتاع القائمة بدل ما أنا عامله على أد المحتوى (wrap_content) أخليه يملء الشاشة دائما حتى لو
المحتوى قليل (fill_parent)
وبالفعل المشكلة اتحلت، فإذا بي أفاجأ بمشكلة آخرى.
المشكلة التانية تتلخص في إن أول عنصر في قوائم الشبكات لو كان يبدأ بكود الدولة بيكون لونه مختلف عن لون الشبكة بس بمجرد إنك تحرك القائمة للأسفل بمقدار عنصرين وترجع مرة أخرى للعنصر الأول تجده أخد لون الشبكة المظبوط (طبعا دا مش عفريت J إنما دا يرجع لطريقة عمل الأدابتر في بناء وهدم صفوف القائمة) بدليل إن لو الرقم الذي يبدأ بكود الدولة كان ترتيبه متأخر في القائمة يظهر باللون الطبيعي للقائمة.
وكعادتي حبيت أختبر المشكلة بشكل أكبر لأتأكد من تحليلي وأكتشف كافة جوانبها فأضفت رقم جديد بكود الدولة ليظهر كعنصر ثاني في القائمة فوجدته بالفعل يأخذ لون مختلف عن الشبكة ولكن ما حيرني إنما لما رجعت خاصية طول القائمة إلى wrap_content وجدت العنصر الأول يظهر بشكل طبيعي أما العنصر الثاني فيظهر بلون مختلف عن الشبكة، حاجة تجنن صح :) معاك حق :D
أخيرا جه وقت
حل المشكلة:
وجدت نفسي
أمامي الكثير من الإختيارات زي إني أترك برمجة الأندرويد وأتوجه إلى منصة أخرى زي
الأيفون أكيد يعني مافيهوش الهبل دا :D طلعلي error فقلت أشوف الإختيار التاني :)
الحل الأول:
إني أعمل تغيير في كلاس الـ Adapter
بدل ما المعادلة (condition)
الخاصة بـ if
تعتمد فقط على كود الشركة أزود فيها كود الدولة، بس كده بدل ما كان بيعمل في أسوء
الحالات 4 حسابات هيوصل 10 حسابات أو معادلات فحسيت إن دا ممكن يثقل بناء القائمة
فلم أفضل هذا الحل كثيرا رغم إنه يبدو جيدا بعد التجربة.
الحل الثاني:
إني أغير الميجانيزم كلها وأعتمد على حاجة تانية بدل أكواد الشركات عشان أميز
القوائم ودي لم أنجح فيها حتى الآن فمازالت تحت التجربة.
الحل الثالث:
يبقي الوضع على ما هو عليه، نظرا لقلة إحتمالات وجود أول كام اسم عند المستخدم بهم
أكواد الدولة فمن الممكن أن المشكلة لا تظهر لأي من المستخدمين، وأبقى أحلها في
الإصدار الجديد إن شاء الله لأن فيه خطة لتغيير التصميم وسيكون لها تأثير على هذا
الموضوع.
حياة المبرمج
مليانه باجات وأهم مميزات المبرمج الشاطر إنه يقدر يحدد نوع المشكلة ويكون عنده
صبر إنه يحلها ويختبر حله لغاية ما يتأكد من دقته (دي مش فكاكة ولا إيه)
نعم هذا علم و ليس بفكاكة يا أخ محمد
ردحذفلكن لدي استغراب بسيط:
لماذا فكرت في ترك عالمك المحبوب أندرويد إلى هذا النظام الآخر؟
هههههههه نورتني بتعليقك أخي عبد العزيز
حذفبخصوص استغرابك فما ذكرته كان على سبيل المزاح :)
جزاك الله خيرا
حذفحتى يا أخي مزاح على وزن عبد الفتاح ههههه، فعلا عندك حق انه ليس بفكاكة أبدا
ههههههههههههه
ردحذفزي العسل والله يا صوصو :D
واحشني بجد
حبيبي والله يا بديع :D
حذفربنا يكرم أصلك
كلام جميل جدا ... وما أظنش فى حد فى المجال ده شاطر الا وتتوفر فيه صفة "رجل المفاجأت" ^_^
ردحذفوأعتقد ان اسباب المشاكل دى ... هى تطلب فهم جيد و دقيق لكل حاجة فى اندرويد ... يعنى نظرية "اندرويد سهل " دى مش صحيحه .. ولا ايه ;)
استمرررررر =D
نورتني يا ابوطارق يا كبير :) وسعيد جدا إن الموضوع عجبك
حذفبرمجة الأندرويد تعتبر سهله في تعلم الأساسيات، إنما عشان تبني حاجات مميزة وتستخدم فيها كامل إمكانيات النظام لازم تتعمق وتكون فاهم برمجة صح.
إن شاء الله خلال الفترة القادمة ناوي أزود التدوينات الخاصة ببرمجة الأندرويد .. فربنا ييسر الحال ويبارك في الوقت.
هههههههههههههههههه عندنا و عندك خير
ردحذفهههههههههه يا رب تكون حليت المشكلة حاليا :)
حذف