رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام خسته نباشید چندتا سوال و درخواست داشتم

دستورات mysql رو کسی دقیقا میتونه بهم بده؟ مثلا سه تا فرگمنت توی یه اکتیوتی دارم ، میخوام یکیش پست هام رو به ترتیب جدیدترین پست ها بگیره از دیتابیس یا حالا سرور ، تب دوم میخوام همون اطلاعات رو بر حسب مثلا تعداد ویو(بیشترین ها) بهم بده و یه فرگمنت دیگه هم میخوام اونایی که مثلا دیده شده رو نمایش بده !  

برای مثال اول که مشکلی ندارم همه پست هارو میتونم به ترتیب بگیرم اما برای 2 مثال دیگه اللخصوص مثال دوم یکم گیجم ! ممنون میشم راهنمایی کنید

 

سوال بعدیم هم اینه ، مثلا کافه بازار حالا که من میخوام مثلا 3 تا فرگمنت رو توی یه اکتیویتی بسازم ، و اطلاعات درونش قرار بدم ، باید برای هر فرگمنت یه آداپتر بسازم دیگه؟که دیتا های خاص هرکدوم رو نشون بده !

اگه این مسئله درست باشه یه اپی مثل اپ کافه بازار تو قسمت برترین ها 3 تا فرگمنت داره توی یک اکتیویتی ، خب؟ بعد این 3 تا یه عالمه آیتم گرفتن ! چرا اپ کرش نمیشه؟ یا اینکه برای کرش شدن اپ این در حد اون قسمت از اپ کافه بازار ، اون دیتا ها خیلی ناچیز اند؟ و کلا اگه مثلا عکس زیاد داشته باشیم برای بهینه سازی اپ توی فرگمنت های یه اکتیویتی چی رو پیشنهاد میکنید؟

و سوال اخر اینکه از چه نوع ویو پیجری در مثلا همون قسمت برترین های کافه بازار استقاده شده؟!(fragment view pager یا fragment state view pager)؟ و اینکه چه موقه از این و چه موقه از اون استفاده کنیم؟(لطفا با ذکر مثال بفرمایید)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

جدیترین پست ها "ببینید  هر پستی که قرار میگیره یک ایدی جدیدی  میگیره میتونید بر اساس بزرگترین ایدی سورت کنید"

select * from tblName order by id desc

حالا  اگر میخواید صفحه بندی بشه  مثلا  هر سری 10 تا  پست رو بیاره به این صورت بزنید

select * from tblName order by id desc limit 0,10

0 >> از شماره  مثلا از شماره 1

10 >> تعداد 10 تا به 10 

حالا بر اساس ویو ها

select * from tblName order by view desc

 

 

حالا اون های که دیده شدندشما باید یک  فیلیدی به دیتا بیس اضافه کنید و  هر وقت اون پست دیده شد عدد اون رو از 0 به یک  تغییر بدید یعنی این پست دیده  شده  البته اگر بخواید  توسط خود کاربر دیده بشه  باید  یک  جدول دیگه ای بزنید و  ایدی پست همراه با ایدی کاربر رو توی اون جدول ذخیره  کنید و از join  توی mysql  استفاده کنید

select * from tblName where post_view=1

 

 

برای سوال بعدیتون  که کاقه بازار  رو مثال زدید این بستگی داره به کد نویسی شما مثلا  میتونید  یک اداپتر  بنویسید  و  3 model   و  یا  به  هر نحو دیگه ای  3 اداپتر  و....  بستگی داره به  قدرت  برنامه نویسی تمیزی نوشتن کد و رعایت  خیلی از  اصول های دیگه

 

درمورد  سوال اخرت هم درست  متوجه نشدم ولی من  بیشتر   view pager  هام رو کاستوم  میکنم  برای استفاده های بیشتر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 15 ساعت قبل، Seven7up گفته است :

سلام

جدیترین پست ها "ببینید  هر پستی که قرار میگیره یک ایدی جدیدی  میگیره میتونید بر اساس بزرگترین ایدی سورت کنید"


select * from tblName order by id desc

حالا  اگر میخواید صفحه بندی بشه  مثلا  هر سری 10 تا  پست رو بیاره به این صورت بزنید


select * from tblName order by id desc limit 0,10

0 >> از شماره  مثلا از شماره 1

10 >> تعداد 10 تا به 10 

حالا بر اساس ویو ها


select * from tblName order by view desc

 

 

حالا اون های که دیده شدندشما باید یک  فیلیدی به دیتا بیس اضافه کنید و  هر وقت اون پست دیده شد عدد اون رو از 0 به یک  تغییر بدید یعنی این پست دیده  شده  البته اگر بخواید  توسط خود کاربر دیده بشه  باید  یک  جدول دیگه ای بزنید و  ایدی پست همراه با ایدی کاربر رو توی اون جدول ذخیره  کنید و از join  توی mysql  استفاده کنید


select * from tblName where post_view=1

 

 

برای سوال بعدیتون  که کاقه بازار  رو مثال زدید این بستگی داره به کد نویسی شما مثلا  میتونید  یک اداپتر  بنویسید  و  3 model   و  یا  به  هر نحو دیگه ای  3 اداپتر  و....  بستگی داره به  قدرت  برنامه نویسی تمیزی نوشتن کد و رعایت  خیلی از  اصول های دیگه

 

درمورد  سوال اخرت هم درست  متوجه نشدم ولی من  بیشتر   view pager  هام رو کاستوم  میکنم  برای استفاده های بیشتر

سپاس از شما ، خیلی بدردم خورد توضیاحتتون ممنونم 

یه توضیح در مورد مثلا view desc بدید ، حالا اون ویو که مقدارمون یا ستونمون توی دیتابیس هست اما اون کلمه desc چیکار میکنه؟

و اینکه این select * from tblName order by id desc limit 0,10 یعنی میاد از آیدی های مثلا 0 تا 10 لود میکنه؟

باقی موارد هم اوکی بود ممنونم.

 

در مورد قسمت آخر ، بله سوالم همینه میخواستم بپرسم چه روشی بهینه تر هستش ، مثلا من یه اکتیویتی دارم ، خب؟ توی این اکتیویتی یه frame layout هستش که توی این فریم لایوت یه دونه ویو پیجر (و تب لایوت) هستش و حالا توی اینا 3 تا فرگمنت دارم 

بر فرض مثال شما فک کنید اخبار ، میخوام این 3 تا فرگمنت رو آخرین اخبار ، پربازدید ترین اخبار و اخبار خوانده شده مثلا ، قرار بدم 

اگه بخوام اصولی و فنی کد بنویسم که برای عملکرد کلی اپ هم بهینه باشه درواقع ، باید چیکار کنم؟ سه تا آداپتر برای هرکدوم از این فرکمنت ها بسازم و بهشون وصلش کنم؟ یا اینکه نه روش های بهتری هم هست که بهینه سازی اپ رو ضعیف نمیکنه ! دقیقا منظورم از این سوال همین بود چون دلم میخواد اپی که مینویسم در حد امکان بهینه باشه 

فقط لطفا هر روشی رو که پیشنهاد میدید یه توضیح در مورد عملی شدنش هم بدید (دقیقا مثل همون مثال دیتابیس که عالی مثال زدید و ممنون)

 

و به عنوان سوال اخر ، اپ های خبری حالا خبرا توی یه اکتیویتی یا حالا فرگمنت جدا هستن و به محض رفتن کاربر و کلیک شدن روی اون میتونیم مقدار ویو(یا همون مقدار بازدید از این خبر) رو تنظیم کنیم ، اما ساز و کار یه اپی مثل تلگرام چیه که مثلا داخل یه صفحه ان تا ایتم و خبر هستش ، حالا اون سیستمش چجوری تشخیص میده که کاربر در حال خوندن کدوم متن هستش؟ و اون مقدار رو توی دیتابیسش اضاف میکنه!ساز و کارش چجوریه؟

ویرایش شده توسط hamidreza.kh
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/07/12, 14:50:35، hamidreza.kh گفته است :

سپاس از شما ، خیلی بدردم خورد توضیاحتتون ممنونم 

یه توضیح در مورد مثلا view desc بدید ، حالا اون ویو که مقدارمون یا ستونمون توی دیتابیس هست اما اون کلمه desc چیکار میکنه؟

و اینکه این select * from tblName order by id desc limit 0,10 یعنی میاد از آیدی های مثلا 0 تا 10 لود میکنه؟

باقی موارد هم اوکی بود ممنونم.

 

در مورد قسمت آخر ، بله سوالم همینه میخواستم بپرسم چه روشی بهینه تر هستش ، مثلا من یه اکتیویتی دارم ، خب؟ توی این اکتیویتی یه frame layout هستش که توی این فریم لایوت یه دونه ویو پیجر (و تب لایوت) هستش و حالا توی اینا 3 تا فرگمنت دارم 

بر فرض مثال شما فک کنید اخبار ، میخوام این 3 تا فرگمنت رو آخرین اخبار ، پربازدید ترین اخبار و اخبار خوانده شده مثلا ، قرار بدم 

اگه بخوام اصولی و فنی کد بنویسم که برای عملکرد کلی اپ هم بهینه باشه درواقع ، باید چیکار کنم؟ سه تا آداپتر برای هرکدوم از این فرکمنت ها بسازم و بهشون وصلش کنم؟ یا اینکه نه روش های بهتری هم هست که بهینه سازی اپ رو ضعیف نمیکنه ! دقیقا منظورم از این سوال همین بود چون دلم میخواد اپی که مینویسم در حد امکان بهینه باشه 

فقط لطفا هر روشی رو که پیشنهاد میدید یه توضیح در مورد عملی شدنش هم بدید (دقیقا مثل همون مثال دیتابیس که عالی مثال زدید و ممنون)

 

و به عنوان سوال اخر ، اپ های خبری حالا خبرا توی یه اکتیویتی یا حالا فرگمنت جدا هستن و به محض رفتن کاربر و کلیک شدن روی اون میتونیم مقدار ویو(یا همون مقدار بازدید از این خبر) رو تنظیم کنیم ، اما ساز و کار یه اپی مثل تلگرام چیه که مثلا داخل یه صفحه ان تا ایتم و خبر هستش ، حالا اون سیستمش چجوری تشخیص میده که کاربر در حال خوندن کدوم متن هستش؟ و اون مقدار رو توی دیتابیسش اضاف میکنه!ساز و کارش چجوریه؟

ممنون میشم بیشتر توضیح بدید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

 

چند روزی کمی کسالت دارم برای همن  نتونستم جواب تاپیک  رو بدم

 

کلمه desc   و  Asc میان  اون مقادری که از دیتا بیس میگیرید رو از بیشتر به کمتر و برعکس  sort میکنند   برای حروف الفبا هم استفاده میشند

توضیحی که برای این limit 0,10  دارم  این هستش

اول عدد 10 میاد به دیتا بیس میگه  توی هر بار واکشی  10 رو فقط نشون بده حالا اگر به 50 تغییر بدی میگه  50 تا رو نشون بده و امام  عدد صفر میگه  از ایدی شماره  1 شوع  کن تا 10 و 2  میاد از 11 شروع میکنه  عدد 0  بستگی داره به  عددی که که  بعد از اون میزاری اگر عدد  10 باشه میاد از 1 و 11 و  21 و ...  10 به 10 میره بالا  50 باشه  میاد از 1 و 51 و 101 و ... شر.ع میکنه  به نمایش یک  عمل  paging  هستش که  توی اکثر  سایت ها یا برنامه ها میبینید مثلاتوی برنامه ها   وقتی recyclerview  رو  میرید به اخر دوباره یک سری اطلاعات میاره 

 

برای  سوال اخر هم میگم بستگی داره اول به نوع کد نویسیتون و بعد به  اون آپتون  چقدر توش از ویو ها استفاده میکنید  تست کنید

 

 

اگر بد توضیح دادم ببخشید دیگه

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 23 ساعت قبل، Seven7up گفته است :

سلام

 

چند روزی کمی کسالت دارم برای همن  نتونستم جواب تاپیک  رو بدم

 

کلمه desc   و  Asc میان  اون مقادری که از دیتا بیس میگیرید رو از بیشتر به کمتر و برعکس  sort میکنند   برای حروف الفبا هم استفاده میشند

توضیحی که برای این limit 0,10  دارم  این هستش

اول عدد 10 میاد به دیتا بیس میگه  توی هر بار واکشی  10 رو فقط نشون بده حالا اگر به 50 تغییر بدی میگه  50 تا رو نشون بده و امام  عدد صفر میگه  از ایدی شماره  1 شوع  کن تا 10 و 2  میاد از 11 شروع میکنه  عدد 0  بستگی داره به  عددی که که  بعد از اون میزاری اگر عدد  10 باشه میاد از 1 و 11 و  21 و ...  10 به 10 میره بالا  50 باشه  میاد از 1 و 51 و 101 و ... شر.ع میکنه  به نمایش یک  عمل  paging  هستش که  توی اکثر  سایت ها یا برنامه ها میبینید مثلاتوی برنامه ها   وقتی recyclerview  رو  میرید به اخر دوباره یک سری اطلاعات میاره 

 

برای  سوال اخر هم میگم بستگی داره اول به نوع کد نویسیتون و بعد به  اون آپتون  چقدر توش از ویو ها استفاده میکنید  تست کنید

 

 

اگر بد توضیح دادم ببخشید دیگه

 

سلام میدونم پستم اسپم هست اما ممنونم ، تشکر و آرزوی سلامتی برای شما استاد عزیز

مرسی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط aliazmoodeh
      سلام من یه آپی دارم یه قسمت وجود داره که اطلاعات رو از سرور میگیره و تو ریسایکلرویو نمایش میده من میخوام این اطلاعات رو تو حالت افلاین هم داشته باشم یعنی چی یعنی بتونم اطلاعاتی که از سرور گرفتم قبلا رو وقتی کاربر اینترنت بهش نمایش بدم دقیقن مثله تلگرام میگم ولی نمیدونم باید چیکار کنم اگر اموزشی در این رابط دارید بهم بگید یا سورسی دارید بهم بگید پولی یا رایگان باشه برام فرقی نمیکنه فقط میخوام مشکلمو حل کنه
    • توسط Vahid761
      دوستان سلام . لطفا کمک کنید . راستش من می خواستم یک text view بسازم که وقتی  یک button دستور یک دستور خاصی رو ارسال کنه متن اون text view تغیر کنه که البته تاحدودی هم موفق شدم ولی مشکلی که هست اینه که اون متن جدید   save نمیشه یعنی با یه باز وبسته کردن اپ دورباره برمیگرده به اون متن اولی یعنی می خوام اون متن جدید رو save کنم  دوستان اگه بلدید چطوری حل میشه خواهشا لطفا کمک کنید تا  این مشکل رو حل کنم ....
    • توسط h.a.m.i.d
      سلام دوستان وقت بخیر ، من دارم یه اپلیکشن آماده می کنم که ارتباط با سرور داره
      داخل هاست من یه یه دیتابیس دارم که اینجا تیبل  users مد نظرم هست، داخل این جدول من چهار ستون دارم که عبارتند از ID,username,pass,date
      date زمان عضوت کاربر به صورت خودکار پر میشه
      حالا سوال اینجاست که من یه بخش پروفایل داخل مین اکتیوتیم دارم که میخوام داخلش تاریخ عضویت کاربر نشون داده بشه، روال به اینصورت هست که داخل اپ یوزنیم و پس رو از شیردپرفرینس میگیره میفرسته به سمت سرور و داخل فایل php اطلاعات دریافت میشه و ستون تاریخ متناظر با اون اطلاعات کاربری دوباره ارسال میشه به سمت اندروید و محتوای تکست ویو مورد نظر رو میسازه ، ولی من تو دریافت اطلاعات از php داخل اپلیکیشن و نوشتن کدها به مشکل خوردم اگه ممکنه برنامه و یا کدهای  php رو برام اصلاح کنید ممنونم.
      برنامه سمت اندروید:
      private void ShowProfile(){ profile = new MaterialDialog.Builder(MainActivity.this) .customView(R.layout.alert_aprofile,false) .show(); AsyncHttpPost post = new AsyncHttpPost( "http://****************profile.php" ); post.setTimeout(5000); MultipartFormDataBody body = new MultipartFormDataBody(); body.addStringPart("Username",sp.getString("Username", null)); body.addStringPart("Pass",sp.getString("Pass", null)); post.setBody(body); AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() { @Override public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) { if (e != null) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { wait.dismiss(); Toast.makeText(MainActivity.this, "no connection", Toast.LENGTH_LONG).show(); e.printStackTrace(); } }); } if (!result.equals("")) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { items.clone(); try { JSONArray jsonArray = new JSONArray(result); for (int i = 0; i < jsonArray.length(); i++) { JSONObject object = jsonArray.getJSONObject(i); HashMap<String, Object> hash_add = new HashMap<String, Object>(); hash_add.put("Date", object.getString("Date")); hash_all.add(hash_add); items = new String[hash_all.size()]; } } catch (Exception e) { e.printStackTrace(); } } }); } } }); کدهای php :
      function get(){ $connection = connectToDatabase(); $Username = $_REQUEST['Username']; $Pass = $_REQUEST['Pass']; if($Username!="" && $Pass!=""){ $result = mysqli_query($connection,"select Date from users where Username='$Username' and Pass='$Pass'"); $array_finish = array(); while($row = mysqli_fetch_array($result)){ $record = array(); $record['Date'] = $row['Date']; $array_finish[] = $record ; } echo json_encode($array_finish); }else { print "null"; } mysqli_close($connection); } می دونم که سمت اندروید برنامه م کامل نیست پس اگه راهی هست راهنماییم کنید کدهای متناسب با این php رو داخل اندروید بنویسم.
      ممنونم
       
    • توسط takin
      سلام 
      داشتم یه بازی آنلاین چهار نفره میساختم که به مشکل بر خودم 
      داخل بازی ازین قراره که هرکس میتونه به چهار جهت بالا پایین حرکت کنه و شلیک کنه 
      توضیحات بیشتر درمورد بازی
      ما دو آبجکت داریم  (گلوله) (پلیر)
      x و y متغیر محور مکان آبجکت که با کلید ها تغییر میکنه .
      با گزینه اسپیس ابجکت گلوله به وجود میاد با مختصات همون آبجکتی که شلیک کرده 
      مشکل
      مشکلم تو ارسال اطلاعات برای بقیست
      مشکل اصلیم ارسال زمان شلیکه 
      نظر خودم
      به نظرم یه جدول در mysql درست کنم که هر شخص محور های x و y داخل اون بفرسته هر لحضه
      یه جدول دیگه درست کنم که هروقت شلیک کرد سه تا تب به اسم سه بازیکن دیگه بسازه که هرکدوم از سه نفر اطلاعاتشو دریافت کرد اون تبی که با آیدیشه پاک بشه
      به نظرم کار میکنه اما دنبال یه روش درستم 
       
       
    • توسط hackn82
      سلام خدمت اساتید گرامی . 

      من یه برنامه نوشتن که برای یادگیری لغاته . وقتی کاربر لغتی رو به بخش علاقه مندی اضافه می کنه لغت نمایش داده نمیشه و باید برنامه رو مجدد اجرا کرد تا لغت انتخاب شده به بخش علاقه مندی اضافه/ حذف بشه . همچنین بعد از هر بار اجرا لیست لغات تکرار میشه ( مثلا بار دوم از هر کدوم 2 سری بار سوم از هرکدوم 3 سری و ... ) ایجاد میشه . ممنون میشم راهنماییم کنید . 
       
      package farmani.com.essentialwordsforielts.mainPage; import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Build; import android.os.Environment; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.design.widget.TabLayout; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import farmani.com.essentialwordsforielts.R; import farmani.com.essentialwordsforielts.search.ActivitySearch; public class MainActivity extends AppCompatActivity { public static Context context; public static ArrayList<Structure> list = new ArrayList<>(); public static ArrayList<Structure> favorite = new ArrayList<>(); DrawerLayout drawerLayout; NavigationView navigationView; ImageView hamburger; SQLiteDatabase database; String destPath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.navigation_activity_main); if (Build.VERSION.SDK_INT >= 23) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE , Manifest.permission.WRITE_EXTERNAL_STORAGE} , 1); } else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE , Manifest.permission.WRITE_EXTERNAL_STORAGE} , 1); } else { setupDB(); selectList(); selectFavorite(); Toast.makeText(MainActivity.this, "You grandet earlier", Toast.LENGTH_LONG).show(); } } if (!favorite.isEmpty()){ favorite.clear(); selectFavorite(); } else if (!list.isEmpty()){ list.clear(); selectList(); } context = getApplicationContext(); setTabOption(); drawerLayout = findViewById(R.id.navigation_drawer); navigationView = findViewById(R.id.navigation_view); hamburger = findViewById(R.id.hamburger); hamburger.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawerLayout.openDrawer(Gravity.START); } }); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if (id == R.id.exit) { AlertDialog.Builder alertDialog = new AlertDialog.Builder( MainActivity.this); alertDialog.setTitle(R.string.exit); alertDialog.setMessage(R.string.exit_ask); alertDialog.setCancelable(false); alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertDialog.show(); } if (id == R.id.search) { Intent intent = new Intent(MainActivity.this, ActivitySearch.class); MainActivity.this.startActivity(intent); } return true; } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: { if (grantResults.length >= 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this, "Access granted", Toast.LENGTH_LONG).show(); } } } } @Override public void onBackPressed() { if (drawerLayout.isDrawerOpen(Gravity.START)) { drawerLayout.closeDrawer(Gravity.START); } else { AlertDialog.Builder alertDialog = new AlertDialog.Builder( MainActivity.this); alertDialog.setTitle(R.string.exit); alertDialog.setMessage(R.string.exit_ask); alertDialog.setCancelable(false); alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertDialog.show(); } } private void setTabOption() { ViewPager viewPager = findViewById(R.id.viewpager); viewPager.setAdapter(new AdapterFragment(getSupportFragmentManager(), context)); TabLayout tabStrip = findViewById(R.id.tabs); tabStrip.setupWithViewPager(viewPager); } private void setupDB() { try { destPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ielts/"; File file = new File(destPath); if (!file.exists()) { file.mkdirs(); file.createNewFile(); CopyDB(getBaseContext().getAssets().open("md_book.db"), new FileOutputStream(destPath + "/md_book.db")); } } catch (IOException e1) { e1.printStackTrace(); } } @Override protected void onResume() { super.onResume(); if (!favorite.isEmpty()){ favorite.clear(); selectFavorite(); } else if (!list.isEmpty()){ list.clear(); selectList(); } } private void CopyDB(InputStream inputStream, OutputStream outputStream) throws IOException { byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } inputStream.close(); outputStream.close(); } private void selectFavorite() { database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.db", null); Cursor cursor = database.rawQuery("SELECT * FROM main WHERE fav = 1", null); while (cursor.moveToNext()) { String word = cursor.getString(cursor.getColumnIndex("word")); String definition = cursor.getString(cursor.getColumnIndex("definition")); String trans = cursor.getString(cursor.getColumnIndex("trans")); String img = cursor.getString(cursor.getColumnIndex("img")); int id = cursor.getInt(cursor.getColumnIndex("id")); Structure struct = new Structure(word, definition, trans, img, id); struct.setWord(word); struct.setDefinition(definition); struct.setTrans(trans); struct.setImg(img); struct.setId(id); favorite.add(struct); } } private void selectList() { database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.db", null); Cursor cursor = database.rawQuery("SELECT * FROM main", null); while (cursor.moveToNext()) { String word = cursor.getString(cursor.getColumnIndex("word")); String definition = cursor.getString(cursor.getColumnIndex("definition")); String trans = cursor.getString(cursor.getColumnIndex("trans")); String img = cursor.getString(cursor.getColumnIndex("img")); int id = cursor.getInt(cursor.getColumnIndex("id")); Structure struct = new Structure(word, definition, trans, img, id); struct.setWord(word); struct.setDefinition(definition); struct.setTrans(trans); struct.setImg(img); struct.setId(id); list.add(struct); } } }  
  • فایل

×
×
  • اضافه کردن...