PDA

View Full Version : ذخیره آیتم های پر یک لیست



ali_khodayar
شنبه 11 بهمن 1393, 10:48 صبح
با عرض سلام.
من دارم یک لیستی را پر میکنم که کاربر حداکثر میتواند 5 مورد را انتخاب و وارد لیست کند . مشکل اینجاست که من میخوام این لیست پر شده را در بانک ذخیره کنم. به این شکل عمل میکنم .
mainRead.setRem1(Integer.parseInt( checkListValue.get(0)));
mainRead.setRem2(Integer.parseInt( checkListValue.get(1)));
mainRead.setRem3(Integer.parseInt( checkListValue.get(2)));
mainRead.setRem4(Integer.parseInt( checkListValue.get(3)));
mainRead.setRem5(Integer.parseInt( checkListValue.get(4)));



این در صورتی درست جواب میده که کاربر هر 5 مورد را انتخاب کرده باشه. اما اگر این انتخاب ها کمتر از 5 باشد مثلأ 3 ، از بخش


mainRead.setRem4(Integer.parseInt( checkListValue.get(3)));
mainRead.setRem5(Integer.parseInt( checkListValue.get(4)));


error گرفته که درست هم هست.
من چطوری میتونم بگم فقط اونایی که پر شده را انتخاب و ذخیره کن.

gilas1368
شنبه 11 بهمن 1393, 11:41 صبح
شما باید ی for روی آیتم هایی ک انتخاب کردین بزارید و بعد با index اون بیاید و اطلاعات رو داخل دیتابیس ذخیره کنین

ali_khodayar
یک شنبه 12 بهمن 1393, 07:51 صبح
شما باید ی for روی آیتم هایی ک انتخاب کردین بزارید و بعد با index اون بیاید و اطلاعات رو داخل دیتابیس ذخیره کنین

ممنون از شما . این راهی که شما گفتید درسته اما مشکل من اینه که توابعی که قراره مقدار لیست در آن ذخیره بشه یکی نیست که بشه با حلقه for مقادیر رو ذخیره کرد. من 5 تابع دارم که مقادیر با توجه به تعداد انتخاب کاربر در آن ذخیره می شود.
مشکل رو حل کردم اما میدونم اصلأ اصولی و بهینه نیست. به همین دلیل دنبال راه درستش هستم.
من به اینصورت انجام دادم.


if(checkListValue.size()==5){ mainRead.setRem1(Integer.parseInt( checkListValue.get(0)));
mainRead.setRem2(Integer.parseInt( checkListValue.get(1)));
mainRead.setRem3(Integer.parseInt( checkListValue.get(2)));
mainRead.setRem4(Integer.parseInt( checkListValue.get(3)));
mainRead.setRem5(Integer.parseInt( checkListValue.get(4)));
}
if(checkListValue.size()==4){
mainRead.setRem1(Integer.parseInt( checkListValue.get(0)));
mainRead.setRem2(Integer.parseInt( checkListValue.get(1)));
mainRead.setRem3(Integer.parseInt( checkListValue.get(2)));
mainRead.setRem4(Integer.parseInt( checkListValue.get(3)));
mainRead.setRem5(0);
}
if(checkListValue.size()==3){
mainRead.setRem1(Integer.parseInt( checkListValue.get(0)));
mainRead.setRem2(Integer.parseInt( checkListValue.get(1)));
mainRead.setRem3(Integer.parseInt( checkListValue.get(2)));
mainRead.setRem4(0);
mainRead.setRem5(0);
}
if(checkListValue.size()==2){
mainRead.setRem1(Integer.parseInt( checkListValue.get(0)));
mainRead.setRem2(Integer.parseInt( checkListValue.get(1)));
mainRead.setRem3(0);
mainRead.setRem4(0);
mainRead.setRem5(0);
}
if(checkListValue.size()==1){
mainRead.setRem1(Integer.parseInt( checkListValue.get(0)));
mainRead.setRem2(0);
mainRead.setRem3(0);
mainRead.setRem4(0);
mainRead.setRem5(0);
}

gilas1368
یک شنبه 12 بهمن 1393, 08:17 صبح
این راهتون کلا اشتباهه
شما باید ی تابع داشته باشید با ی ورودی
بعد توی اون تابع براساس اون ورودیا اطلاعات رو تجزیه و تحلیل کنین
ضمن اینکه هیچوقت توی برنامه اتون از 1 یا 2 و... استفاده نکنین
همه اینا رو توی ی constant بگیرید و بعد اونجا اون ثابت رو جاش بذارید
اینو گفتم چون بعدترها ک برمیگردید و میخاید کدتون رو ویرایش کنین متوجه بشین این چیه و چرا اینجاس

ali_khodayar
یک شنبه 12 بهمن 1393, 08:44 صبح
شما کاملأ درست میگید. این کار رو هم انجام دادم ، یعنی یه تابعش کردم اما بازهم توی اون تابع نمیتونم این مقدار دهی درست رو انجام بدم. مشکل من توی همین تجزیه و تحلیل ورودی های این تابعه. چطوری باید این کارو انجام بدم؟؟؟؟؟؟

gilas1368
یک شنبه 12 بهمن 1393, 09:26 صبح
کارایی رو ک میخای انجام بدی برام بنویس

ali_khodayar
یک شنبه 12 بهمن 1393, 09:48 صبح
یک لیستی از اطلاعات به کاربر نمایش داده میشه . کاربر از توی اون لیست حداکثر میتونه 5 آیتم رو انتخاب کنه. کد آیتم های انتخابی رو باید بگیرم و در دیتابیس ذخیره کنم. ( من برای فرمم یه کلاس نوشتم که متد های set , get داره . متد ها رو با کد ها پر میکنم (get) و بعد هنگام ذخیره توی با متد (set) اطاعات رو میگیرم و ذخیره میکنم.)