سؤال

لدي ListActivity الذي يحصل على بياناته من استعلام قاعدة البيانات.ولدي أيضا محول مخصص الذي يمتد محول المؤشر بسيط.

لإظهار المحتوى المخصص ، لقد تجاوزت newView وطرق بيندفيو.

يحتوي كل عنصر من عناصر العرض على:

  1. TextView تحتوي على عنوان
  2. ImageView تحتوي على عدد من النجوم-يتم تغيير الصورة المعروضة على أساس القيمة التي تم الحصول عليها من قاعدة البيانات
  3. زر-يتغير نص الزر على النقرات (المفضلة/جعل المفضلة) ، ويؤدي إلى حدث تحديث قاعدة البيانات.

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

قرأت أن notifyDatasetChanged() ليس صحيحا لهذه الحالة حيث يجب إخطار المحول بتغييرات قاعدة البيانات.أنا أحاول استخدام reQuery() الطريقة ، ولكن لا أعرف من أين وضعه.

يجب أن أضع reQuery() في ال onClick طريقة الزر?ان لم, حيث يجب أن توضع?

هل كانت مفيدة؟

المحلول

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


يجب أن تحقق من القيمة التي تم النقر عليها أو تغييرها.


لتحديث القائمة دون التمرير لديك لاستدعاء ليستفيو.جيتادابتر ().نوتيفيداتاسيتشانجيد()

تحقق من الرابط التالي.هنا ذكرت رمز كامل لاستخدام ليستفيو بشكل صحيح.باستخدام هذا يمكننا تحقيق أي سلوك ليستفيو.يمكننا تضمين الرسوم المتحركة أيضا.

تغيير ليستفيو الخلفية-سلوك غريب

آمل أن تكون هذه المساعدة :)

نصائح أخرى

إذا كان لديك محول أساسي ممتد , بعد تغيير البيانات المكالمة ، ليستفيو.سيتادابتر () وفي جيتفيو () ، تحديث بيانات العرض أيضا.

استخدام SetListAdapter مع ArrayAdapter لعرض القائمة.استخدام ConvertView لتجنب تضخيم View.

if (convertView==null)
{
     //inflate your list
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top