PDA

View Full Version : مشکل با while



single_2008boy
چهارشنبه 14 آبان 1393, 08:07 صبح
من چی کار کنم این حلقه وایل اگر صفحه ای رو باز کرد بقیه رو چک نکنه تا دوباره بهش دستور بدم ؟؟

Cursor cu = db.rawQuery("SELECT id FROM student",null);
String data[][] = new String[cu.getCount()][cu.getColumnCount()];
if (cu != null) {
int i = 0;
while (cu.moveToNext()) {
int j=0;
while (j < cu.getColumnCount()) {

switch(cu.getInt(j))
{
case 2:
{
Intent intent1 = new Intent(com.sajad.database.MainActivity.this,com.sa jad.database.OneMainActivity.class);
startActivity(intent1);
break;
}
case 3:
{
Intent intent2 = new Intent(com.sajad.database.MainActivity.this,com.sa jad.database.TwoMainActivity.class);
startActivity(intent2);
break;
}
default:
showMessage("Error", "No records found in iddddd");
break;
}
// editText1.append(data[i][j].toString());
// editText1.append("\n");

j++;
}
i++;
cu.moveToNext();
}
cu.close();

mehrdad85
چهارشنبه 14 آبان 1393, 09:13 صبح
سلام
نمیدونم درست متوجه شدم منظورتو یا نه
اما خوب داخل شرط while ، نقیض شرط باز شدن صفحه را با شرطی که الان نوشتی OR کن
اگرم منظورتو درست متوجه نشدم یکم واضحتر بگو میخوای چکار کنی تا اگه چیزی به ذهنم میرسه کمک کنم


موفق باشید

abbasalim
چهارشنبه 14 آبان 1393, 09:24 صبح
سلام میتونید با دستور break از while خارج بشید

single_2008boy
چهارشنبه 14 آبان 1393, 11:32 صبح
سلام
نمیدونم درست متوجه شدم منظورتو یا نه
اما خوب داخل شرط while ، نقیض شرط باز شدن صفحه را با شرطی که الان نوشتی OR کن
اگرم منظورتو درست متوجه نشدم یکم واضحتر بگو میخوای چکار کنی تا اگه چیزی به ذهنم میرسه کمک کنم


موفق باشید

این حلقه قراره یه عدد رو از دیتابیس بخونه طبق اون عدد یه page رو باز کنه که توی اون page یه دکمه میزارم که بیاد توی دیتابیس عدد بعدی رو بخونه دوباره به همین ترتیب یه ستون توی دیتابیس که قراره از روی اون بخونه .

single_2008boy
پنج شنبه 15 آبان 1393, 16:19 عصر
کسی نیست کمک کنه؟؟؟

dalmif
پنج شنبه 15 آبان 1393, 16:40 عصر
خب شما نیاز به حلقه وایل ندارید.
شما می تونید بدون حلقه وایل هم اطلاعات دیتابیس رو بخونید.
وایل برای اینه که شما بخواید همه اطلاعات رو بیرون بکشید

Nevercom
پنج شنبه 15 آبان 1393, 17:10 عصر
من نتونستم ساختا و هدف کد شما رو درک کنم.
شما دارید تمام دیتابیس رو پیمایش می کنید، در هر ردیف، تمام ستون ها رو پیمایش می کنید و دنبال عددهایی می گردید که بر اساس اون اکتیویتی رو اجرا کنید.
و بعد از پیدا کردن اولین عدد کل فرآیند متوقف بشه ؟!

الگوی خوبی رو انتخاب نکردید.
چرا متغیر شما در فیلد مشخصی نیست که همه ی فیلدها رو بررسی می کنید ؟

به هرحال راه حلی برای کد شما (از دید بیننده) وجود نداره، چون هدفی نداره و شما هم تشریحش نکردید.

اما اگر میخاید از دوتا حلقه ی while خارج بشید (بعنوان یک سوال کلی)، در حلقه ی داخلی مقدار یک متغیر رو ست کنید (بهش میگیم Flag) و با break از حلقه ی درونی خارج بشید.
در حلقه ی بیرونی هم چن کنید از مقدار متغیر Flag برابر با مقدار تعیین شده بود، از حلقه خارج بشه.

single_2008boy
جمعه 16 آبان 1393, 08:06 صبح
من یه ستون id توی دیتابیسم دارم که می خوام طبق اون ستون از اول تا اخرش چک کند و اکتیویتی ها رو اجرا کنه

single_2008boy
چهارشنبه 21 آبان 1393, 17:31 عصر
بزارین این جوری توضیح بدم
توی دیتابیس من چند ستون است که یکیش id هست می خوام براساس این ستون هر عددی بود page مربوط به اون رو فراخوانی کنه و بقیه فیلد های هم ردیف اون رو توی اون page نشون بده و بعد متوقف بشه؟؟؟ و بعد توی هر page یه دکمه هست که با زدن اون این حلقه تکرار میشه تا اخرین عدد ستون id ?? حالا چه راهی پیشنهاد می کنید؟؟

single_2008boy
جمعه 23 آبان 1393, 09:05 صبح
خواهشا یکی کمک کنه؟؟؟؟

Nevercom
جمعه 23 آبان 1393, 19:25 عصر
حلقه ی دوم رو حذف کنید، حلقه ی دوم فلسفه ی وجودیش بخاطر اینه که شما اندیس فیلدی با نام مثلاً id_ رو نمیدونید.
پس switch رو بیارید تو حلقه ی اول و حلقه ی دومی رو حذف کنید
و شرط switch زو به این شکل تغییر بدید:
switch(cu.getInt(cu.getColumnIndex("_id"))){...}

اما من اگر بخوام پیشنهاد بدم، در یک کوئری تمام آیدی ها رو از فیلد id_ بخونید، این لیست رو در آرایه ای بریزید که در تمامی کلاس ها قابل دسترسی باشه، و بعد کدی برای جابجایی بین اکتیویتی ها بر اساس این لیست داشته باشید.

اگر روش دوم رو درست متوجه نمیشید، بهتره روش خودتون رو دنبال کنید با این تغییری که عرض کردم

single_2008boy
شنبه 24 آبان 1393, 22:26 عصر
من هم می خواستم همین پیشنهاد شما رو انجام بدم ولی با چه دستوری وبعد چطوری هر بار بیاد یه خونه از ارایه رو بخونه و از حلقه بیرون بیاد دوباره برگرده به حلقه؟؟؟
یه چیز دیگه که تو این حلقه while از swtich که استفاده می کنم تمام حالت ها رو با هم اجرا میکنه(بدون اینکه اگر اولی رو اجرا کرد از حلقه بیاد بیرون)تمام حالت ها رو پشت سر هم اجرا می کنه؟؟
دستت هم درد نکنه کمک کردی
حلقه ی دوم رو حذف کنید، حلقه ی دوم فلسفه ی وجودیش بخاطر اینه که شما اندیس فیلدی با نام مثلاً id_ رو نمیدونید.
پس switch رو بیارید تو حلقه ی اول و حلقه ی دومی رو حذف کنید
و شرط switch زو به این شکل تغییر بدید:
switch(cu.getInt(cu.getColumnIndex("_id"))){...}

اما من اگر بخوام پیشنهاد بدم، در یک کوئری تمام آیدی ها رو از فیلد id_ بخونید، این لیست رو در آرایه ای بریزید که در تمامی کلاس ها قابل دسترسی باشه، و بعد کدی برای جابجایی بین اکتیویتی ها بر اساس این لیست داشته باشید.

اگر روش دوم رو درست متوجه نمیشید، بهتره روش خودتون رو دنبال کنید با این تغییری که عرض کردم