Android Question Loading JSON file from a website & Parsing JSON data of Multiple Arrays

Shahid Saeed

Active Member
Licensed User
Longtime User
I went through all the Tutorials about usage of JSON file, and currently found only few methods, Local JSON file and remote JSON file.

My Question is the method for remote JSON files which provides a way through connecting to MySQL server and fetch the data and parse into JSON. But what if someone doesn't have access over to MySQL and the only source he have is the JSON file link e.g (http://www.somewebsite.com/JSON/JSON.php). What will be the method to include that JSON file, or if there is a way to read data from remote file and store into Assets folder as local JSON file.

My Second Question is about Parsing specific JSON Data from Multiple Arrays

for example :

B4X:
{
   "news_sections": [
      {
         "section_title": "الأخبار",
         "news": [
            {
               "news_date": "الأربعاء ، ١٩ مارس  ٢٠١٤",
               "news_title": "الوارية تنتزع سيف صاحب السمو رئيس الدولة",
               "news_summary": "أهدى معالي الشيخ سلطان بن حمدان آل نهيان مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن، إنجاز «هجن الرئاسة» وفوزها بسيفي الحول والزمول، وخنجر الزمول المحليات، إلى صاحب السمو الشيخ خليفة بن زايد آل نهيان رئيس الدولة حفظه الله،",
               "news": "<p align=\"right\">أهدى معالي الشيخ سلطان بن حمدان آل نهيان مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن، إنجاز «هجن الرئاسة» وفوزها بسيفي الحول والزمول، وخنجر الزمول المحليات، إلى صاحب السمو الشيخ خليفة بن زايد آل نهيان رئيس الدولة حفظه الله، مؤكداً أن فوز هجن الرئاسة بـ «ناموس القائد»، يمثل أعلى وأروع تكريم لمسيرة إنجازاتها المتلاحقة، التي توجتها أمس بتتويج مستحق واستثنائي، مشيراً إلى أن ما شهده المهرجان الختامي بالوثبة، يمثل شاهداً حياً على دعم وعطاء القيادة للرياضات التراثية، وفي مقدمتها سباقات الهجن التي تعيش عصرها الذهبي. <\/p><p align=\"right\">كما أهدى معاليه إنجاز «هجن الرئاسة» إلى الفريق أول سمو الشيخ محمد بن زايد آل نهيان ولي عهد أبوظبي نائب القائد الأعلى للقوات المسلحة، مشيداً بدعم سموه المتواصل للرياضة والرياضيين، وللرياضات التراثية بصفة خاصة، وفي مقدمتها سباقات الهجن، التي يحفظ منتسبوها لسموه أياديه البيضاء على هذه الرياضة، والتي تمثلت في عدة سباقات تطوف إمارات الدولة باسم سموه، إضافة إلى الدعم الدائم والسخي للسباقات في كل الميادين، ما جعل الإمارات وجهة للملاك والمضمرين من دول الخليج كافة. <\/p><p align=\"right\">وثمن معالي الشيخ سلطان بن حمدان آل نهيان مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن، دعم وعطاء سمو الشيخ منصور بن زايد آل نهيان، نائب رئيس مجلس الوزراء وزير شؤون الرئاسة، مؤكداً أن عطاء سموه بلا حدود، وأن ما شهدته سباقات الهجن ومختلف الرياضات التراثية من تطور، كان نتاجاً لأفكار سموه الوثابة التي لا تحدها حدود، وتنطلق من حب عميق للوطن، ومن ربط رائع بين الماضي بموروثه العريق والحاضر بمعطيات التطور، تطلعاً إلى مستقبل حافل بإذن الله لدولتنا الناهضة. <br><\/p>",
               "image": "http://www.prcamels.ae/images/news/npic18711720.jpg"
            },
            {
               "news_date": "الأحد ، ١٦ مارس  ٢٠١٤",
               "news_title": "الخفيفة لـ «هجن الرئاسة» تتصدر منافسات الشيوخ للثنايا",
               "news_summary": "شهد معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة حفظه الله، رئيس اتحاد سباقات الهجن، منافسات اليوم السادس للمهرجان الختامي السنوي لسباقات الهجن بمنطقة الوثبة بالعاصمة أبوظبي",
               "news": "<div style=\"text-align: right;\">شهد معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة حفظه الله، رئيس اتحاد سباقات الهجن، منافسات اليوم السادس للمهرجان الختامي السنوي لسباقات الهجن بمنطقة الوثبة بالعاصمة أبوظبي، والتي خصصت لسن (الثنايا) الطفح ولمسافة 6 كلم، كما شهد المنافسات، جمهور غفير من محبي رياضة سباقات الهجن من أبناء الدولة وإخوانهم من دول مجلس التعاون الخليجي.<\/div><div style=\"text-align: right;\"><br><\/div><div style=\"text-align: right;\">وتصدرت (الخفيفة) لهجن الرئاسة مع المضمر مبارك أحمد مطر الخييلي الشوط الأول والمخصص للبكار المحليات وأحرزت المركز الأول والناموس بعد أن قطعت مسافة الشوط في توقيت (9:15:2 دقيقة)، وجاءت في المركز الثاني (احتلال) لهجن الرئاسة والمضمر عيسى أحمد مطر الخييلي بتوقيت وقدره(9:17:2)، وحلت ثالثة (الوجبة) لهجن الشحانية والمضمر سالم فاران المري بتوقيت (9:20:00).<\/div><div style=\"text-align: right;\"><br><\/div>",
               "image": "http://www.prcamels.ae/images/news/npic27449365.jpg"
            },
            {
               "news_date": "السبت ، ١٥ مارس  ٢٠١٤",
               "news_title": "هجن الرئاسة.. «خط أحمر»",
               "news_summary": "شهد سمو الشيخ حمدان بن محمد بن راشد آل مكتوم ولي عهد دبي، منافسات اليوم الخامس للمهرجان الختامي السنوي لسباقات الهجن في منطقة الوثبة بالعاصمة أبوظبي",
               "news": "<div style=\"text-align: right;\">شهد سمو الشيخ حمدان بن محمد بن راشد آل مكتوم ولي عهد دبي، منافسات اليوم الخامس للمهرجان الختامي السنوي لسباقات الهجن في منطقة الوثبة بالعاصمة أبوظبي، كما شهد المنافسات معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة حفظه الله، رئيس اتحاد سباقات الهجن، والشيخ راشد بن حمدان بن محمد آل نهيان، والشيخ خليفة بن سيف بن محمد آل نهيان، والشيخ المر بن مكتوم آل مكتوم، وجمع غفير من محبي رياضة سباقات الهجن من أبناء الدولة وإخوانهم أبناء دول مجلس التعاون الخليجي.<\/div><div style=\"text-align: right;\"><br><\/div><div style=\"text-align: right;\">وكانت هجن الرئاسة قد حلقت كعادتها بناموس الإبداع وأثبتت أنها «خط أحمر» على صعيد المنافسة، بعد أن اكتسحت معظم المراكز، وغردت وحدها خارج السرب، في مكانتها التي لا تدانيها فيها غيرها، وليس أدل على ذلك من حصولها على «هاتريك» في الأشواط الرئيسية لمنافسات «الإيذاع»، التي أقيمت لمسافة 6 كلم في الميدان الجنوبي للفترة المسائية، والتي شهدت تصدر (كيف) لهجن الرئاسة والمضمر راشد محمد بالسم المنصوري منافسات الشوط الأول «أبكار مفتوح» وفازت بالمركز الأول بعد أن تصدرت المراحل الأخيرة وحققت أفضل توقيت لفئة الإيذاع بعد أن قطعت المسافة بتوقيت وقدره (8:48:5)، وجاءت في المركز الثاني (كوره) لهجن الرئاسة والمضمر راشد محمد بالسم المنصوري وقطعت المسافة بتوقيت وقدره (8:49:8)، وفي المركز الثالث (هدوء) لهجن العاصفة والمضمر حمد راشد غدير الكتبي بتوقيت وقدره (8:56:1).<\/div><div style=\"text-align: right;\"><br><\/div>",
               "image": "http://www.prcamels.ae/images/news/npic77497797.jpg"
            }
         ]
      },
      {
         "section_title": "الأخبار العامة",
         "news": [
            {
               "news_date": "الخميس ، ٣٠ يناير  ٢٠١٤",
               "news_title": "سلطان بن حمدان: دعم القيادة الرشيدة وراء تفوق هجن الإمارات",
               "news_summary": "هنأ معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة رئيس اتحاد سباقات الهجن، صاحب السمو الشيخ خليفة بن زايد آل نهيان رئيس الدولة حفظه الله، بنجاح العملية الجراحية داعيا الله عز وجل أن يمن على سموه بالصحة والعافية، كما هنأ معاليه صاحب السمو رئيس الدولة بإنجاز هجن الرئاسة بفوز «سمحة» بالسيف الذهبي للحول و«معزز» بالخنجر الذهبي للزمول المحليات.",
               "news": "<div style=\"text-align: right;\">هنأ معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة رئيس اتحاد سباقات الهجن، صاحب السمو الشيخ خليفة بن زايد آل نهيان رئيس الدولة - حفظه الله - بنجاح العملية الجراحية داعيا الله عز وجل أن يمن على سموه بالصحة والعافية، كما هنأ معاليه صاحب السمو رئيس الدولة بإنجاز هجن الرئاسة بفوز «سمحة» بالسيف الذهبي للحول و«معزز» بالخنجر الذهبي للزمول المحليات في مهرجان أمير قطر للهجن العربية الأصيلة، وهنأ معاليه الفريق أول سمو الشيخ محمد بن زايد آل نهيان ولي عهد أبوظبي نائب القائد الأعلى للقوات المسلحة بالإنجاز المميز، كما هنأ معاليه سمو الشيخ منصور بن زايد آل نهيان نائب رئيس مجلس الوزراء وزير شؤون الرئاسة بتفوق هجن الرئاسة في ميدان الشحانية، وتوجه معاليه بالتهنئة إلى شعب الإمارات بهذا الإنجاز الكبير.<\/div><div style=\"text-align: right;\"><br><\/div><div style=\"text-align: right;\">&nbsp;وقال معاليه: «هذه الإنجازات هي نتاج للدعم غير المحدود الذي تجده رياضات الآباء والأجداد عامة وسباقات الهجن على وجه الخصوص، من سموه التي تهدف إلى تعزيز قيم الماضي في نفوس الأبناء والأجيال المقبلة، مشيراً معاليه إلى أن هذا الدعم السخي كفل لهجن الرئاسة تحقيق الانتصارات والتتويج بأرفع الألقاب في السباقات التي تشارك فيها داخل وخارج الدولة. وأكد معاليه أن الفريق أول سمو الشيخ محمد بن زايد آل نهيان ولي عهد أبوظبي نائب القائد الأعلى للقوات المسلحة يقدم الدعم والاهتمام الكبيرين لسباقات الهجن مما وضعها على طريق التوهج المستمر وفتح الطريق لحصد الإنجازات والتوشح بالألقاب وانعكس ذلك على هجن الرئاسة والتي تخوض التحديات بحثاً عن القمة في كافة المحافل الداخلية والخارجية.<\/div><div style=\"text-align: right;\"><br><\/div><div style=\"text-align: right;\">وأوضح معاليه أن دعم ومتابعة سمو الشيخ منصور بن زايد آل نهيان نائب رئيس مجلس الوزراء وزير شؤون الرئاسة لسباقات الهجن وتوفير كافة المتطلبات ظل يصب في اتجاه تطويرها والوصول بها إلى أعلى المراتب، وما إنجاز هجن الرئاسة في مهرجان أمير قطر إلا محصلة ونتاج طبيعي للدعم الكبير الذي يقدمه سموه لرياضة سباقات الهجن.<\/div><div style=\"text-align: right;\"><br><\/div><div style=\"text-align: right;\">وأوضح معاليه «سباقات الهجن في الإمارات محظوظة بالاهتمام الكبير والدعم الذي تجده من القيادة الرشيدة التي تحرص على غرس هذا الإرث التاريخي في نفوس الشباب لتواصل رياضة الآباء والأجداد مسيرتها مع الأجيال والتي تحمل العديد من المعاني العميقة في نفوس الجميع».<\/div><div style=\"text-align: right;\">وأشار معاليه إلى أن هجن الرئاسة تخوض كل التحديات للتتويج بالناموس في السباقات التي تقام محلياً أو في المنافسات الخارجية لذا تأتي مشاركاتها مليئة بالتحدي بحثاً عن التتويج، وهنا نجد أن تتويجها بسيف أمير قطر في الشحانية وبستة رموز أخرى هو امتداد لإنجازات متتالية ظلت تحققها على الدوام، ونأمل أن تتواصل مسيرة نجاحاتها في كل السباقات المقبلة.<\/div><div style=\"text-align: right;\"><br><\/div>",
               "image": "http://www.prcamels.ae/images/news/npic89046723.jpg"
            },
            {
               "news_date": "الأحد ، ٠٨ ديسمبر  ٢٠١٣",
               "news_title": "سمو الشيخ منصور بن زايد آل نهيان يحضر مأدبة غداء أقامها معالي الشيخ سلطان بن حمدان آل نهيان",
               "news_summary": "حضر سمو الشيخ منصور بن زايد آل نهيان نائب رئيس مجلس الوزراء وزير شؤون الرئاسة، مأدبة غداء أقامها لسموه معالي الشيخ سلطان بن حمدان بن محمد آل نهيان، مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن.",
               "news": "<div style=\"text-align: right;\">حضر سمو الشيخ منصور بن زايد آل نهيان نائب رئيس مجلس الوزراء وزير شؤون الرئاسة، مأدبة غداء أقامها لسموه معالي الشيخ سلطان بن حمدان بن محمد آل نهيان، مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن. حضر المأدبة الشيخ سعيد بن حمدان بن محمد آل نهيان، والشيخ خليفة بن سلطان بن حمدان آل نهيان، وعدد من الملاك من أبناء الدولة ودول مجلس التعاون الخليجي، وقدم الحضور التهنئة لسموه بمناسبة فوز إسطبلات الوثبة بكأس اليوم الوطني للقدرة، بعد إحراز الفارس علي يوسف الحمادي المركز الأول على ظهر الفرس (آرمور).<\/div>",
               "image": "http://www.prcamels.ae/images/news/npic92061215.jpg"
            }
         ]
      },
      {
         "section_title": "السباقات",
         "news": [
            {
               "news_date": "الأربعاء ، ١٩ مارس  ٢٠١٤",
               "news_title": "الوارية تنتزع سيف صاحب السمو رئيس الدولة",
               "news_summary": "أهدى معالي الشيخ سلطان بن حمدان آل نهيان مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن، إنجاز «هجن الرئاسة» وفوزها بسيفي الحول والزمول، وخنجر الزمول المحليات، إلى صاحب السمو الشيخ خليفة بن زايد آل نهيان رئيس الدولة حفظه الله،",
               "news": "<p align=\"right\">أهدى معالي الشيخ سلطان بن حمدان آل نهيان مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن، إنجاز «هجن الرئاسة» وفوزها بسيفي الحول والزمول، وخنجر الزمول المحليات، إلى صاحب السمو الشيخ خليفة بن زايد آل نهيان رئيس الدولة حفظه الله، مؤكداً أن فوز هجن الرئاسة بـ «ناموس القائد»، يمثل أعلى وأروع تكريم لمسيرة إنجازاتها المتلاحقة، التي توجتها أمس بتتويج مستحق واستثنائي، مشيراً إلى أن ما شهده المهرجان الختامي بالوثبة، يمثل شاهداً حياً على دعم وعطاء القيادة للرياضات التراثية، وفي مقدمتها سباقات الهجن التي تعيش عصرها الذهبي. <\/p><p align=\"right\">كما أهدى معاليه إنجاز «هجن الرئاسة» إلى الفريق أول سمو الشيخ محمد بن زايد آل نهيان ولي عهد أبوظبي نائب القائد الأعلى للقوات المسلحة، مشيداً بدعم سموه المتواصل للرياضة والرياضيين، وللرياضات التراثية بصفة خاصة، وفي مقدمتها سباقات الهجن، التي يحفظ منتسبوها لسموه أياديه البيضاء على هذه الرياضة، والتي تمثلت في عدة سباقات تطوف إمارات الدولة باسم سموه، إضافة إلى الدعم الدائم والسخي للسباقات في كل الميادين، ما جعل الإمارات وجهة للملاك والمضمرين من دول الخليج كافة. <\/p><p align=\"right\">وثمن معالي الشيخ سلطان بن حمدان آل نهيان مستشار صاحب السمو رئيس الدولة، رئيس اتحاد سباقات الهجن، دعم وعطاء سمو الشيخ منصور بن زايد آل نهيان، نائب رئيس مجلس الوزراء وزير شؤون الرئاسة، مؤكداً أن عطاء سموه بلا حدود، وأن ما شهدته سباقات الهجن ومختلف الرياضات التراثية من تطور، كان نتاجاً لأفكار سموه الوثابة التي لا تحدها حدود، وتنطلق من حب عميق للوطن، ومن ربط رائع بين الماضي بموروثه العريق والحاضر بمعطيات التطور، تطلعاً إلى مستقبل حافل بإذن الله لدولتنا الناهضة. <br><\/p>",
               "image": "http://www.prcamels.ae/images/news/npic18711720.jpg"
            },
            {
               "news_date": "الأحد ، ١٦ مارس  ٢٠١٤",
               "news_title": "الخفيفة لـ «هجن الرئاسة» تتصدر منافسات الشيوخ للثنايا",
               "news_summary": "شهد معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة حفظه الله، رئيس اتحاد سباقات الهجن، منافسات اليوم السادس للمهرجان الختامي السنوي لسباقات الهجن بمنطقة الوثبة بالعاصمة أبوظبي",
               "news": "<div style=\"text-align: right;\">شهد معالي الشيخ سلطان بن حمدان بن محمد آل نهيان مستشار صاحب السمو رئيس الدولة حفظه الله، رئيس اتحاد سباقات الهجن، منافسات اليوم السادس للمهرجان الختامي السنوي لسباقات الهجن بمنطقة الوثبة بالعاصمة أبوظبي، والتي خصصت لسن (الثنايا) الطفح ولمسافة 6 كلم، كما شهد المنافسات، جمهور غفير من محبي رياضة سباقات الهجن من أبناء الدولة وإخوانهم من دول مجلس التعاون الخليجي.<\/div><div style=\"text-align: right;\"><br><\/div><div style=\"text-align: right;\">وتصدرت (الخفيفة) لهجن الرئاسة مع المضمر مبارك أحمد مطر الخييلي الشوط الأول والمخصص للبكار المحليات وأحرزت المركز الأول والناموس بعد أن قطعت مسافة الشوط في توقيت (9:15:2 دقيقة)، وجاءت في المركز الثاني (احتلال) لهجن الرئاسة والمضمر عيسى أحمد مطر الخييلي بتوقيت وقدره(9:17:2)، وحلت ثالثة (الوجبة) لهجن الشحانية والمضمر سالم فاران المري بتوقيت (9:20:00).<\/div><div style=\"text-align: right;\"><br><\/div>",
               "image": "http://www.prcamels.ae/images/news/npic27449365.jpg"
            }
         ]
      }
   ]
}

I want to load data of the first array section from this JSON code and display all arrays within that array plus there is a link to image file which I want to display as well. what will be the best approach to display that data along with the picture, please note that the data will be displayed within a scroll view or advice the best possible way to show the data other than scroll view because there are other elements on that page and only half of the acclivity size is available for this data.

The following data will be displayed from the JSON array:

News_Date
News_Title
News_Summary

I want to cover 20% of the Area with Picture and 80% with the Text in A Row and for each item the rows will be repeated.
 

Peter Simpson

Expert
Licensed User
Longtime User
You can just add the word Exit to the bottom of the main For Loop, thus it does not loop again and does not reach section 1.

I stored your JSON feed results into a file so that I can test it. Everything is working just fine.
B4X:
Sub load_data
    Dim DataString As String = File.ReadString(File.DirAssets, "data.txt")

    Dim parser As JSONParser
        parser.Initialize(DataString)

    Dim root As Map = parser.NextObject
    Dim news_sections As List = root.Get("news_sections")

    For Each colnews_sections As Map In news_sections
        Dim section_title As String = colnews_sections.Get("section_title")
        Dim news As List = colnews_sections.Get("news")

        For Each colnews As Map In news
            Log(colnews.Get("news_summary"))
            Log(colnews.Get("news_date"))
            Log(colnews.Get("news"))
            Log(colnews.Get("image"))
            Log(colnews.Get("news_title"))
        Next
     
        Exit
    Next
End Sub
 
Last edited:
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
@Peter Simpson Great effort, brother it worked :).

Now I am on second mission to display the contents in a scroll view, will you be able to provide further help?

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim NewsUrl As String
    NewsUrl = "http://www.prcamels.ae/json/news.json.php"
    Dim NewsJson As String

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim ScrollView1 As ScrollView
    Dim lblDate As Label
    Dim news_date As String
    Dim lblTitle As Label
    Dim news_title As String
    Dim lblSummary As Label
    Dim news_summary As String
    Dim newsimage As ImageView
    Dim news_image As String
    Dim ImageView1 As ImageView
   
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("TestNews")
    Dim GetPage As HttpJob
    GetPage.Initialize("GetPageJob", Me)
    GetPage.Download(NewsUrl)
    ProgressDialogShow2("يرجى الانتظار جاري التحميل ...", False)
   
       
       
End Sub

Sub JobDone(Job As HttpJob)
    If Job.Success = True Then
        NewsJson = Job.GetString
       
    Dim parser As JSONParser
        parser.Initialize(NewsJson)
       
    Dim root As Map = parser.NextObject
    Dim news_sections As List = root.Get("news_sections")
   
    Dim bob As Int = 0
    For Each colnews_sections As Map In news_sections
   
        LogColor(bob, Colors.red)
       
        Dim section_title As String = colnews_sections.Get("section_title")
        Dim news As List = colnews_sections.Get("news")
       
        For Each colnews As Map In news
            Dim news_summary As String = colnews.Get("news_summary")
            Dim news_date As String = colnews.Get("news_date")
            Dim news1 As String = colnews.Get("news")
            Dim news_image As String = colnews.Get("image")
            Dim news_title As String = colnews.Get("news_title")
    Log(news_title)
   
    lblDate.Initialize("")
        ScrollView1.Panel.AddView(lblDate, 80dip,5dip,240dip,30dip)
        'lblTitle.Color = Colors.RGB(250, 250, 210)
        lblDate.TextColor = Colors.Black

        lblTitle.Initialize("")
        ScrollView1.Panel.AddView(lblTitle, 10dip,40dip,310dip,30dip)
        'lblTitle.Color = Colors.RGB(250, 250, 210)
        lblTitle.TextColor = Colors.Black

        lblSummary.Initialize("")
        ScrollView1.Panel.AddView(lblSummary, 10dip,80dip,310dip,30dip)
        'lblTitle.Color = Colors.RGB(250, 250, 210)
        lblTitle.TextColor = Colors.Black
       
        Dim GetImage As HttpJob
        GetImage.Initialize("GetImageJob", Me)
        GetImage.Download(news_image)
       
        newsimage.Initialize("")
        ScrollView1.Panel.Addview(newsimage, 0, 0, 20%X, 30%y)
       
        lblDate.Text = news_date
        lblTitle.Text = news_title
        lblSummary.Text = news_summary
        newsimage.SetBackgroundImage(GetImage.GetBitmap)
        ImageView1.SetBackgroundImage(GetImage.GetBitmap)

        'ht = StrUtil.MeasureMultilineTextHeight(lblTitle, news_title)
        'ScrollView1.Panel.Height = ht
        'lblTitle.Height = ht
        ScrollView1.ScrollPosition = 0
        DoEvents
        Next
    Exit 'ADD EXIT HERE
    Next
       
        'Dim GetImage As HttpJob
        'GetImage.Initialize("GetImageJob", Me)
        'GetImage.Download(news_image)
               
       
        ProgressDialogHide
    Else
        Log("Error: " & Job.ErrorMessage)
    End If
End Sub

Error Message:

B4X:
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
** Service (httputils2service) Create **
** Service (httputils2service) Start **
0
الوارية تنتزع سيف صاحب السمو رئيس الدولة
java.io.FileNotFoundException: /data/data/b4a.example/cache (Is a directory)
    at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
    at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
    at java.io.FileInputStream.<init>(FileInputStream.java:88)
    at anywheresoftware.b4a.objects.streams.File.OpenInput(File.java:209)
    at anywheresoftware.b4a.objects.drawable.CanvasWrapper$BitmapWrapper.Initialize(CanvasWrapper.java:498)
    at anywheresoftware.b4a.keywords.Common.LoadBitmap(Common.java:1111)
    at anywheresoftware.b4a.samples.httputils2.httpjob._getbitmap(httpjob.java:116)
    at b4a.example.main._jobdone(main.java:443)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:174)
    at anywheresoftware.b4a.keywords.Common$5.run(Common.java:957)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:132)
    at android.app.ActivityThread.main(ActivityThread.java:4123)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    at dalvik.system.NativeStart.main(Native Method)
java.io.FileNotFoundException: /data/data/b4a.example/cache (Is a directory)
java.lang.RuntimeException: JSON Object expected.

    at anywheresoftware.b4a.objects.collections.JSONParser.NextObject(JSONParser.java:47)
    at b4a.example.main._jobdone(main.java:371)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:174)
    at anywheresoftware.b4a.keywords.Common$5.run(Common.java:957)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:132)
    at android.app.ActivityThread.main(ActivityThread.java:4123)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: JSON Object expected.
 
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
Shahid do you actually understand what you are doing?
Honestly speaking I know nothing about what I am doing just trying to do what I need and using examples from other posts to try if it work.

This is how i want it to look the attached file
 

Attachments

  • screen568x568.jpeg
    screen568x568.jpeg
    38 KB · Views: 207
Upvote 0

eps

Expert
Licensed User
Longtime User
You got the headings, then you exit. The exit was to stop you tripping over the rest of the content.

Now you want the content? So you don't need the exit, but you need to parse the content in a satisfactory manner.

Have you worked with ScrollView before? It's a bit painful at first.

I would, if I were you, generate the code with Trace. Then execute the code and see where the errors are being created. Then try to work out what the problem is. If after at least some consideration you can't work out what the problem is, then post here.
 
Upvote 0

Peter Simpson

Expert
Licensed User
Longtime User
I personally recommend that you read the following post very carefully indeed.

http://www.b4x.com/android/forum/threads/class-tableview-supports-tables-of-any-size.19254/

There's an improved version available, it's completely up to you to decide which version to use, I use V1.11 and not V1.31. It's not difficult to use the TableView, actually it's extremely simple indeed.

I'm just a bit lost for words why you appear to be having so many problems, especially with @Erel's JSON code which I didn't actually change. You just need to read and try to understand what the code is actually doing, once you understand what the code is actually doing you should not get the errors that you are getting.

BASIC stands for Beginner's All-Purpose Symbolic Instruction Code :)

Please read the link above, I'm sure that you will find it easy to implement once you have figured out what the code is saying to you, but doing the word for you teaches you absolutely nothing...
 
Upvote 0

Peter Simpson

Expert
Licensed User
Longtime User
Honestly speaking I know nothing about what I am doing just trying to do what I need and using examples from other posts to try if it work.

This is how i want it to look the attached file

hey @eps, at least @Shahid Saeed is being extremely truthful in his response, I completely respect that. He could have said that he knows exactly what he is doing :)

@Shahid Saeed the screen shot does not look too difficult to replicate to me, just keep up the work and try to read and understand what the code is saying to you, you will get there. I often have to read simple code multiple times before I finally get it. Sometimes I even take notes before figuring out what relatively simple code is saying to me. Other times I can understand complicated code straight away. The human mind is such a strange thing to comprehend.

Anyway just read the link that I sent you, give it a try, I'm sure that you get it sooner or later. If you really get stuck then just post a question on that post, but only after giving it everything...
 
Last edited:
Upvote 0

eps

Expert
Licensed User
Longtime User
Yep, 100% agree he is being honest, which is why kept on trying to help. It just started to feel like a never ending "an error has occurred".. not a "I've tried to work out what this error is and I just don't understand it. I tried this, but it didn't work"

:)
 
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
@Peter Simpson & @eps I am really very grateful to get help from you guys, Basically I am a PHP Developer with zero knowledge about Java & Android, but to save my position I have accepted this task to clone the App for Android version, this APP is already available on iPhone & iPad.

https://itunes.apple.com/ae/app/presidential-camels/id847285568?mt=8

Just knocking my head into this coding, I know its hard but I am sure at the end I will know something out of it. I am going to read the link and lets see if I will be able to finish it on time.
 
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
I have strated with it and just want to confirm if I am going to the right direction:

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim NewsUrl As String
    NewsUrl = "http://www.prcamels.ae/json/news.json.php"
    Dim NewsJson As String

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim Table1 As Table
   
   
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("TestNews")
   
    Dim GetPage As HttpJob
    GetPage.Initialize("GetPageJob", Me)
    GetPage.Download(NewsUrl)
    ProgressDialogShow2("يرجى الانتظار جاري التحميل ...", False)       
       
End Sub

Sub JobDone(Job As HttpJob)
    If Job.Success = True Then
        NewsJson = Job.GetString
       
    Dim parser As JSONParser
        parser.Initialize(NewsJson)
       
    Dim root As Map = parser.NextObject
    Dim news_sections As List = root.Get("news_sections")
   
    Dim bob As Int = 0
    For Each colnews_sections As Map In news_sections
   
        LogColor(bob, Colors.red)
       
        'Dim section_title As String = colnews_sections.Get("section_title")
        Dim news As List = colnews_sections.Get("news")
       
        For Each colnews As Map In news
        Dim news_summary As String = colnews.Get("news_summary")
        Dim news_date As String = colnews.Get("news_date")
        'Dim news1 As String = colnews.Get("news")
        Dim news_image As String = colnews.Get("image")
        Dim news_title As String = colnews.Get("news_title")
        Log(news_title)
       
        Table1.Initialize(Me, "Table1", 2)
        Table1.AddToActivity(Activity, 0, 0dip, 100%x, 64%y)
        Table1.AddRow(Array As String(news_image, news_date))
        Table1.AddRow(Array As String("", news_title))
        Table1.AddRow(Array As String("", news_summary))
        Table1.SetColumnsWidths(Array As Int(100dip, 100%x - 100dip))
           
        Next
    Exit 'ADD EXIT HERE
    Next
       
        'Dim GetImage As HttpJob
        'GetImage.Initialize("GetImageJob", Me)
        'GetImage.Download(news_image)
               
       
        ProgressDialogHide
    Else
        Log("Error: " & Job.ErrorMessage)
    End If
End Sub

And this is the error I am getting

B4X:
** Activity (main) Create, isFirst = false **
** Activity (main) Resume **
0
الوارية تنتزع سيف صاحب السمو رئيس الدولة
java.lang.RuntimeException: Object should first be initialized (View).
    at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:46)
    at anywheresoftware.b4a.objects.ViewWrapper.getLeft(ViewWrapper.java:138)
    at b4a.example.table._showrow(table.java:832)
    at b4a.example.table._addrow(table.java:85)
    at b4a.example.main._jobdone(main.java:383)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:174)
    at anywheresoftware.b4a.keywords.Common$5.run(Common.java:957)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:132)
    at android.app.ActivityThread.main(ActivityThread.java:4123)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)


    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (View).
 
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
This makes a bit more sense now!

When is the deadline?
I have only 10 days to finish it up. Almost 3 days i spent on fixing the layout compatibility with all screen sizes because it is full screen app with a background image and in different screen sizes it got stretched. Than there was Arabic Date which i had fixed with the help of Erel & DonManfred, Now I am stuck on news part than there is pictures Album and Videos from Youtube and some other data. This all I have to finish within the time frame. Going step by step and I am sure with your help I will wrap it up.
 
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
Did you forget to initialize table1?

I think this code is already there:

B4X:
Table1.Initialize(Me, "Table1", 2)
 Table1.AddToActivity(Activity, 0, 0dip, 100%x, 64%y)
 Table1.AddRow(ArrayAsString(news_image, news_date))
 Table1.AddRow(ArrayAsString("", news_title))
 Table1.AddRow(ArrayAsString("", news_summary))
 Table1.SetColumnsWidths(ArrayAsInt(100dip, 100%x - 100dip))
 
Upvote 0

Peter Simpson

Expert
Licensed User
Longtime User
I've just got back in from picking my niece up from school, what have I missed :)

WOW!!!
You have a lot to do I 10 days considering that you've never used B4A before. You've taken on a huge undertaking considering that PHP is your speciality and not Android apps.

I would have demanded more time.

Do you have more screen shots of what the actual feed looks like in the Apple version of the app?
 
Upvote 0

Shahid Saeed

Active Member
Licensed User
Longtime User
Below is the Final code and it is working now. But still there are many things which needed to be sorted out. Can I make table border 0 mean no borders, can I have the text in different lines within one row and how to fix the row height to text size?

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim NewsUrl As String
    NewsUrl = "http://www.prcamels.ae/json/news.json.php"
    Dim NewsJson As String

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim Table1 As Table
 
 
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("TestNews")
 
    Dim GetPage As HttpJob
    GetPage.Initialize("GetPageJob", Me)
    GetPage.Download(NewsUrl)
    ProgressDialogShow2("يرجى الانتظار جاري التحميل ...", False)     
     
End Sub

Sub JobDone(Job As HttpJob)
    If Job.Success = True Then
        NewsJson = Job.GetString
     
    Dim parser As JSONParser
        parser.Initialize(NewsJson)
     
    Dim root As Map = parser.NextObject
    Dim news_sections As List = root.Get("news_sections")
 
    Dim bob As Int = 0
    For Each colnews_sections As Map In news_sections
 
        LogColor(bob, Colors.red)
     
        'Dim section_title As String = colnews_sections.Get("section_title")
        Dim news As List = colnews_sections.Get("news")
     
        For Each colnews As Map In news
        Dim news_summary As String = colnews.Get("news_summary")
        Dim news_date As String = colnews.Get("news_date")
        'Dim news1 As String = colnews.Get("news")
        Dim news_image As String = colnews.Get("image")
        Dim news_title As String = colnews.Get("news_title")
        Log(news_title)
     
        Table1.Initialize(Me, "Table1", 2)
        Table1.AddToActivity(Activity, 0, 170dip, 100%x, 100%y - 170dip)
        Table1.SetHeader(Array As String("", ""))
        For i =0 To colnews.Size -1
        Table1.AddRow(Array As String(news_date, news_image))
        Table1.AddRow(Array As String(news_title, ""))
        Table1.AddRow(Array As String(news_summary, ""))
        Next
        Table1.SetColumnsWidths(Array As Int(100%x - 100dip, 100dip))
         
        Next
    Exit 'ADD EXIT HERE
    Next
     
        'Dim GetImage As HttpJob
        'GetImage.Initialize("GetImageJob", Me)
        'GetImage.Download(news_image)
             
     
        ProgressDialogHide
    Else
        Log("Error: " & Job.ErrorMessage)
    End If
End Sub
 

Attachments

  • NewsTest.zip
    10.2 KB · Views: 213
Upvote 0
Top