رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در پیاده سازی یک صفحه داینامیک
#1
سلام دوستان
بنده یک برنامه دارم که در قسمت از آن نیاز به طراحی صفحه ای برای آزمون گیری از کاربر داریم 
مشکل کار اینجا شروع میشه که تعداد نمونه سوالات بسیار بالا هستند و روز به روز هم به این نمونه سوالات اضافه خواهند شد و قرار هست از وب سرویس این سوالات خونده بشه. 
سوالات کلا یا چند گزینه ای یا جا خالی هستند
حالا من میخوام یک صفحه طراحی کنم که به صورت داینامیک نمونه سوال مورد نظر رو در خودش لود کنه و برای اینکار احتمالا لازمه که تمام آیتم های داخل صفحه(textview,radiobutton,...) بصورت داینامیک باشند
بهترین راه حل یا روش برای طراحی این صفحه داینامیک چه روشی است؟ 
آیای باید برای هرکدام از نمونه سوالات یک صفحه طراحی کنم یا از روش داینامیک میتونم به جواب برسم؟
پاسخ
تشکر شده توسط:
#2
بنظر من بهتره که با RecyclerView کار کنید. داخل هر آیتم عناصری برای هر مدل سؤال بگذارین و هرکدوم از این عناصر رو که مربوط به یک مدل خاص از سؤالات هستن، توی یه والد گروه‌بندی کنین. بعد موقع نمایش اون آیتم، برحسب نوع سؤال، مواردی که مربوط به سایر انواع سؤالات میشه رو مخفی کنین و فقط عناصر مربوط به همون نوع سؤال رو تکمیل کنین.
پاسخ
تشکر شده توسط: diaoko
#3
استاد عزیز ممنون بابت پاسخگوییتون
تا حدودی متوجه منظورتون شدم اما اگه مثالی هم بزنید خیلی ممنون میشم 
لازم به ذکر است که هر نمونه از سوالات شامل حداقل 20 سوال هست که باید داخل یک صفحه نمایش داده بشه
پاسخ
تشکر شده توسط:
#4
ببینید مثلاً توی لی‌اوت آداپترتون چنین چیزی دارین:
<LinearLayout
    android:id="@+id/lytType1"
    ...>
    ...
</LinearLayout>

<LinearLayout
    android:id="@+id/lytType2"
    ...>
    ...
</LinearLayout>

<LinearLayout
    android:id="@+id/lytType3"
    ...>
    ...
</LinearLayout>

حالا موقع نمایش سؤال، برحسب نوعش میاین توی آداپتر و در قسمت onBindViewHolder مواردی که موردنیاز نیست رو پنهان میکنین:
StructQuestion q = questions.get(position);
switch (q.type) {
    case 1:
        viewHolder.lytType1.setVisibility(View.VISIBLE);
        viewHolder.lytType2.setVisibility(View.GONE);
        viewHolder.lytType3.setVisibility(View.GONE);
        // ...
        break;
    ...
}
پاسخ
تشکر شده توسط: diaoko , mortezapiri
#5
سلام مهندس اسم این کلاس چی هست ؟ q.type
پاسخ
تشکر شده توسط:
#6
استاد بنده راهنمایی شما متوجه شدم و انجام دادمش دادم اما الان یه سری مشکلات خیلی بزرگتر اومدن سر راهم
فرض کنید ما توی هر نمونه سوال 40 سوال داریم که مثلا 5 تا از این سوال های دارای یک قالب یا همون type هستن،حالا اگه توی RecyclerView ما بخواهیم از این روش سویچ استفاده کنیم مجبوریم مثلا برای این type از سوال که فرضا چهار گزینه ای هست 4 تا RadioButton بگذاریم و برای هر کدوم از این Radiobutton ها یک متغیر مثلا radio1,radio2,radio3,radio4 اختصاص بدیم و این اختصاص متغیر عملا برای هر 5 سوال انجام میشه و مشکل اینجا شروع میشه که بخواهیم پاسخ های کاربر رو به یک Activity که قرار هست جوابهای رو بررسی کنه، ارسال کنیم،اینجا که متغیر ها هم اسم هستن چجوری میشه تشخیص داد که کدام جواب مربوط به کدام یک از اون 5 تا سوال مورد نظر هست؟
ممنون میشم اگه راهنمایی کنید
پاسخ
تشکر شده توسط:
#7
باز هم موقع بررسی باید نوع سؤال رو چک کنین. اون StructQuestion و q.type هم مثال بود. یعنی یه ساختار برای سؤالات داریم (درقالب یک کلاس) که یه فیلد type داره که مشخص میکنه که سؤال از چه نوعیه.
پاسخ
تشکر شده توسط:
#8
استاد ممنون از اینکه با صبر حوصله تمام سوالات رو جواب میدی
فکر کنم منظورم رو درست بیان نکردم براتون 
مطابق تصویر زیر من برای هر type سوال یک linearlayout دارم که هر بار فراخوانی میشه اما مشکل اینجاست که id گزینه های همه ی سوالاتی که از یک type هستن یکی هست و من وقتی بخوام این اطلاعات رو به activity مقصد ارسال کنم به مشکل میخورم 
لطفا راهکار یا ایده ی مناسبی برای این اگر مد نظرتون هست بفرمایید
ممنون 
[عکس: photo_2017_02_07_21_19_10.jpg]
پاسخ
تشکر شده توسط:
#9
مشکلی وجود نداره چون این گزینه‌ها هرکدوم توی یکی از آیتم‌های RecyclerView هستن و id تکراری ایجاد نمیشه. موقع ارسال به سرور هم باید id جواب انتخابی رو همراه با شماره سؤال که هردو داخل Adapter هستن، بفرستین.
پاسخ
تشکر شده توسط: diaoko




کاربران در حال بازدید این موضوع: 3 مهمان