البرمجة

تحديد وإرسال بيانات متعددة من ListView في Android

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

  1. تعديل الـ ListViewAdapter: أضف خاصية لتتبع العناصر المحددة وتحديث قائمة العناصر المحددة عندما يتم تحديد أو إلغاء تحديد العنصر. يمكنك استخدام SparseBooleanArray لتحقيق ذلك.

  2. تمكين تحديد أكثر من عنصر: اسمح للمستخدم بتحديد أكثر من عنصر بحد أقصى 3، وعند الوصول إلى هذا الحد، أعرض رسالة توضح أنه لا يمكن اختيار أكثر من هذا العدد.

  3. تمرير العناصر المحددة: احتفظ بقائمة العناصر المحددة في النشاط وعند النقر على زر “الحجز الآن”، قم بإنشاء كائن JSON لتمثيل البيانات المحددة (العناصر المحددة وبيانات المستخدم) وإرساله إلى الخادم.

  4. تعديل الخادم: قم بتعديل الخادم ليتعامل مع البيانات التي يتم إرسالها من التطبيق.

هذه نقاط عامة لتوجيهك. إليك بعض التفاصيل حول كيفية تنفيذ ذلك:

  • تعديل الـ ListViewAdapter:

    • أضف SparseBooleanArray لتتبع العناصر المحددة.
    • في getView، ضع الشيفرة لتحديث SparseBooleanArray عندما يتم تحديد أو إلغاء تحديد العنصر.
  • تمكين تحديد أكثر من عنصر:

    • في onClick للـ CheckBox، تحقق من عدد العناصر المحددة. إذا كانت أقل من 3، قم بتحديث SparseBooleanArray وتمكين اختيار العنصر، وإلا، قم بعرض رسالة توضح أنه لا يمكن اختيار أكثر من 3 عناصر.
  • تمرير العناصر المحددة:

    • في onClick لزر “الحجز الآن”، قم بإنشاء JSON يحتوي على العناصر المحددة وبيانات المستخدم.
    • استخدم Intent لتمرير هذا JSON إلى النشاط التالي.
  • تعديل الخادم:

    • قم بتعديل نقطة النهاية على الخادم لتتعامل مع بيانات JSON الجديدة.

تأكد من إنشاء متغيرات لتخزين بيانات المستخدم (مثل تواريخ الوصول والمغادرة وعدد الأشخاص) والعناصر المحددة، واستخدامها في إنشاء الكائن JSON الذي سيتم إرساله إلى الخادم.

المزيد من المعلومات

بالطبع، إليك المزيد من التفاصيل حول كيفية تنفيذ الخطوات المذكورة:

  1. تعديل الـ ListViewAdapter:

    • قم بإضافة SparseBooleanArray لتتبع العناصر المحددة في الـ ListViewAdapter.
    java
    private SparseBooleanArray mSelectedItemsIds; public ListViewAdapter(Context context, ArrayList itemlist) { this.context=context; AllMenu = itemlist; imageLoader = new ImageLoader(context); mSelectedItemsIds = new SparseBooleanArray(); }
    • في getView، قم بتحديث mSelectedItemsIds عند تحديد أو إلغاء تحديد العنصر.
    java
    c.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(c.isChecked() && checkCounter >=3) { // عرض رسالة بأنه تم اختيار الحد الأقصى من العناصر } else { if(c.isChecked()) { mSelectedItemsIds.put(position, true); } else { mSelectedItemsIds.delete(position); } notifyDataSetChanged(); } } });
  2. تمكين تحديد أكثر من عنصر:

    • في onClick لـ CheckBox، قم بفحص عدد العناصر المحددة. إذا كان أقل من 3، قم بتحديث mSelectedItemsIds وتمكين اختيار العنصر، وإلا، عرض رسالة توضح أنه لا يمكن اختيار أكثر من 3 عناصر.
  3. تمرير العناصر المحددة:

    • في onClick لزر “الحجز الآن”، قم بإنشاء JSON يحتوي على العناصر المحددة وبيانات المستخدم.
    java
    booknow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // إنشاء JSON يحتوي على العناصر المحددة وبيانات المستخدم JSONObject jsonObject = new JSONObject(); try { // إضافة بيانات المستخدم jsonObject.put("arrival_date", arrival.getText().toString()); jsonObject.put("departure_date", departure.getText().toString()); jsonObject.put("adults", adult.getSelectedItem().toString()); jsonObject.put("children", children.getSelectedItem().toString()); // إنشاء JSONArray للعناصر المحددة JSONArray selectedItemsArray = new JSONArray(); for (int i = 0; i < mSelectedItemsIds.size(); i++) { int key = mSelectedItemsIds.keyAt(i); if (mSelectedItemsIds.get(key)) { JSONObject itemObject = new JSONObject(); itemObject.put("name", AllMenu.get(key).getName()); itemObject.put("location", AllMenu.get(key).getLocation()); // قم بإضافة المزيد من البيانات حسب الحاجة selectedItemsArray.put(itemObject); } } // إضافة JSONArray للعناصر المحددة إلى الJSON الرئيسي jsonObject.put("selected_items", selectedItemsArray); // إرسال jsonObject إلى النشاط التالي Intent intent = new Intent(Hotels.this, NextActivity.class); intent.putExtra("json_data", jsonObject.toString()); startActivity(intent); } catch (JSONException e) { e.printStackTrace(); } } });
  4. تعديل الخادم:

    • قم بتعديل نقطة النهاية على الخادم لتتعامل مع البيانات التي يتم إرسالها من التطبيق.

    يجب على الخادم قبول JSON وفك تشفيره لاستخدام بيانات المستخدم والعناصر المحددة. يمكنك استخدام مكتبة PHP مثل json_decode() لفك تشفير JSON والتعامل مع البيانات.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر