رفتن به مطلب

fun_code

کاربر رو به رشد
  • تعداد ارسال ها

    942
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    18

تمامی مطالب نوشته شده توسط fun_code

  1. خواستم ببینم چنین قابلیتی در کتابخانه بوده و بنده نتونستم استفاده کنم ، یا شما زحمت اضافه کردنش رو کشیدین. در هر حال متشکرم
  2. احتمالا متجه منظورم نشدید. کلیپ زیر از دیوار رو ببینید و به حرکت اسکرول دقت کنید : (نشانگر اسکرول رو دقت کنید که هنوز به انتها نرسیده دیتاها از سرور بارگزاری میشن و اسکرول اصلا متوقف نمیشه و برنامه های جدید برای روان بودن برنامه از این شیوه استفاده میکنن) http://s3.picofile.com/file/8364207650/divar.mp4.html حالا کلیپ زیر رو نگاه کنید که سورس خودتون هست و از دیتابیس آفلاین بصورت لیمیت بارگزاری میکنه و اضافه میکنه. من با سرعت هم که اسکرول میکنم وقتی به انتها میرسه اسکرول متوقف و بارگزاری انجام میشه ، اما اسکرول به حرکتش ادامه نمیده و باید دوباره اسکرول کرد. http://s5.picofile.com/file/8364208068/b4a.mp4.html و البته در ریسایکلر کتابخانه شما نشانگر اسکرول مخفی شده و میخواستم اینم بپرسم که چطور نمایانش کنیم ؟
  3. جناب شاهپیری ممنون میشم سه سوال زیر رو پاسخ بدین : 1. در ریسایکلرهایی که در برنامه های فروشگاهی و حرفه ای شبیه به بازار و دیوار و ... استفاده شده ، روند اضافه شدن آیتم های جدید با این کتابخانه تفاوت داره. در این کتابخانه اسکرول که به انتها رسید اسکرول متوقف میشه و آیتم ها بارگزاری و اضافه میشن. اما در برنامه هایی که عرض کردم پیش از رسیدن به انتهای اسکرول ، عملیات بارگزاری انجام و آیتم ها اضافه میشن... و اسکرول هم متوقف نمیشه و ریسایکلر روان کار میکنه...(البته میدونم به سرعت سرور و بارگزاری دیتا ارتباط داره ، اما بارگزاری 2 ثانیه هم طول بکشه ، اسکرولی که متوقف شده پس از بارگزاری دیتا با همون سرعت به حرکتش ادامه میده...) چطور این مورد رو میشه در این کتابخانه پیاده کرد ؟ 2. جسارتا در نسخه های قبلی کتابخانه رویداد getSpanSize وجود داشت یا به نسخه جدید اضافه کردید ؟ 3. و در نسخه جدید تغییر در withDefaultDividier چه کاربردی داشت ؟ چون در آموزش هم با تغییرش نتیجه خاصی رو مشاهده نکردین و در هر دو حالت Oriantation_Vertical قرار دادین. متشکرم
  4. آقا گرفتم چی شد. حتما باید در رویداد onBindViewHolder به هر آیتم یه خاصیتی بدی یا یه کاریش بکنی... در غیر اینصورت ریسایکلر مشکل پیدا میکنه و اشتباها یه آیتم دیگه در زمان اسکرول بجاش قرار میده... (البته شاید ماهیت ریسایکلر اصلی است که تمام آیتم ها در رویداد onBindViewHolder باید مقداردهی بشن) انشالله که اگر تمام آیتم ها هم مقدار دهی شدن باشن ، پشت صحنه اتفاقی نمیفته و نیتمون رو خیر میگیریم. در عین حال ، خدا خیرتون بده جناب شاهپیری عزیز ، با این مشکلاتی که در زمان استفاده از ریسایکلر مواجه میشم دارم یقین پیدا میکنم که باید برم سمت جاوا. تا الان دو به شک بودم... اما کم کم دارم به یقین میرسم که باید سمت کتابخانه های اصلی ریسایکلر ، Retrofit و ... رفت و نباید انعطافی که جاوا داره رو از دست داد ... انشاالله این پروژه رو تمام کنم میرم سمت جاوا. و در آخر ممنونم از همراهیتون و کاری میکنید که با محدودیت های B4A و منابع کمی که داره بتونیم برنامه های خوبی بسازیم.
  5. بسیار بسیار عالی بود. متشکرم 1. جسارتا در نسخه های قبلی کتابخانه رویداد getSpanSize وجود داشت یا به نسخه جدید اضافه کردید ؟ 2. و تغییر در withDefaultDividier چه کاربردی داشت ؟ چون در آموزش هم با تغییرش نتیجه خاصی رو مشاهده نکردین و در هر دو حالت Oriantation_Vertical قرار دادین.
  6. ممنونم و آموزش رو میبینم ، اما این موردی که عرض کردم کل ریسایکلر رو پوشش قرار میده و قابل بحث و بررسی است. بنده بطور شفاف روند ایجاد و حذف ویوها در ریسایکلر رو میدونم... قبلا هم عرض کردم ، حدود دو سال گذشته که اطلاع نداشتم چنین کتابخانه ای وجود داره در یکی از پروژه هام یک ریساکلر تک ستونی ساختم که با اسکرول آیتم ها ایجاد و اضافه میشدن. و اما فرمودین : ""مشکل از کدنویسی شما بود عزیز. کتابخونه همچین مشکلی نداره. جوی ویوها رو ادکرده بودین که با اسکرول ریسایکلر روی پنل سوار میشده." آیتم ها به شیوه خاص و عجیبی اضافه نشدن. تمام آیتم ها به یک شیوه در رویداد OnCreateViewHolder ایجاد میشن. اما در رویداد onBindViewHolder به لیبل شش آیتم اول متنی اضافه نکردم تا بشه پشتشون رو دید اما به بقیه متن دادم و پشتشون قابل مشاهده نیست. آیتم ها نیز با شماره مشخص شدن که بطور واضح ببینیم آیتم ها به درستی و در مکان خود اضافه شدن یا خیر... میبینید که در ابتدا با اسکرول به سمت پایین تمام آیتم ها بدرستی ایجاد و در جای خود هستند. اما با اسکرول به سمت بالا میبینیم یهو آیتم شماره 17 قبل از آیتم شماره 1 و کلا در ستونی اشتباه ایجاد شده است و چون 6 آیتم اول بدون محتوا و پُشتِشان مشخص است براحتی میشه این اضافه شدن های عجیب رو دید. الان منطقی توضیح دادم که جور خاصی چیزی اضافه نشده و میشه گفت روند ایجاد مشکل داره. لطفا منطقی بفرمایید که چرا این مورد رخ میده و چطور میشه اطمینان کرد این اتفاق نمیفته ؟ (چون پشت آیتم های بعدی مشخص نیست) سورس گویای روند عادی ساخت ویو ها است : Private Sub pr_getItemCount As Int Return items.Size End Sub Private Sub pr_onBindViewHolder(layoutitem As Object,position As Int,viewtype As Int) Dim pnl As Panel=layoutitem pnl.Width=30%x pnl.Height=100dip If position>5 Then Dim namlbl As Label=pnl.GetView(0) namlbl.Color=Colors.LightGray namlbl.TextColor=Colors.red namlbl.Gravity=Gravity.CENTER_HORIZONTAL+Gravity.CENTER_VERTICAL namlbl.Text=position-5 End If End Sub Private Sub pr_onCreateViewHolder(layoutitem As Object,viewtype As Int) As Object Dim pnl As Panel=layoutitem Dim namlbl As Label namlbl.Initialize("") pnl.AddView(namlbl,2%x,0, 31%x,90dip) Return Null End Sub
  7. استاد لطفا بفرمایید که اون مشکل بیخودی اضافه شدن آیتم ها در ابتدای لیست رو مشاهده کردین ؟ آیا دقیقا مشکل بود یا خیر ؟
  8. جناب شاهپیری ، در ابتدا از همراهی شما سپاسگزارم. " واسه یه کار به این سادگی نزدیکه به 600 خط کد نوشتین. یه متنی رو میخواستین نشون بدین شش تا لیبل ایجاد کردین و دونه دونه یه خط بهشون دادین. وقتی واسه این کار اینجور راه حلی رو میرین معلومه یه چیز پیچیده مثه ریسایکلر ویو رو خیلی بدتر و پیچیده تر واسه خودتون پیادش میکنید. " والله تعداد خطوط Main تنها 200 خط بود و بطور کلی علنا سورس شما در صفحه اول بازار است ! تنها نام توابع تغییر کرده و 5 تا لیبل بیشتر اضافه شده است. اگر پیچیدگی ای هم هست در سورس خودتون بوده... همچنین جهت امنیت منابع و سرورمان ناچارا کمی در دریافت مقادیر و روند مقداردهی لیست ها اصلاحات صورت گرفت(مقادیر لیبل ها را ثابت و الکی وارد کردم) وگرنه در آن حد علم کدنویسی دارم که برای یک متن ثابت چند لیبل ایجاد نکنم. عمدا هم نام فیلدها رو گذاشتم که حدس بزنید کارایی داشته و سورسی که میبینید تغییر کرده است ... که متاسفانه متوجه این موضوع نشده اید. در عین حال ، رسیدن به موردی که عرض میکنم بسیار ساده است... شما یک ریسایکلر گرید ویو 3 تایی بسازید... با 30 آیتم و 6 آیتم اول رو خالی (بدون هیچ آبجکتی) رها کنید و از آیتم هفتم به بعد آبجکت ها را اضافه کنید. سپس اسکرول رو پایین و بالا کنید تا به مشکلی که عرض کردم برسید/ "مجددا سورس خودتون رو" که اینبار بسیار ساده هم هست و تنها کمی تغییر دادم. لطفا بررسی بفرمایید : http://s3.picofile.com/file/8363914018/recyclerdtabase.rar.html " الان یه پیشنهاد دیگه من براتون دارم اینه که بیاین و کلا یه ریسایکر داشته باشین و اون پنل رو هم جز یکی از آیتمهاش در نظر بگیرین. با متغیر viewtype به راحتی میتونید این کارو انجام بدین. تو پوزیشن صفر یه پنل برگردونید و بقیه پوزیشنا هم دیگه به حالت عادی. " تا آنجایی که در آموزش ها مشاهده کردم ، پیشنهادتان عملی نیست... ریسایکلری که از نوع گرید ویو است ، چطور اولین آیتم را یک پنل با width =100%x قرار بدهیم ! اصلا ممکن است چنین پیشنهادی را اجرایی کرد ؟ مشخص است اصلا به ساختار موجود در کلیپ و سورس و ... دقت نکرده اید. خواهش میکنم استاد گرامی که لطفا با تمرکز دو دقیقه وقت بگذارید و بفرمایید ساخت چنین موردی با این کتابخانه به چه شکل است؟ مجددا تکرار میکنم خدمتتون ، بخش اول پنل با width =100%x و پس از آن گرید ویو است. که با اسکرول شدن تمام آیتم ها اسکرول می شوند... با تشکر
  9. تا الان بیدار بودم و نخوابیدم. باید سورس رو از سورس اصلی تفکیک کنم. کمی استراحت میکنم و سورس رو ارسال میکنم. ویدیو اول رو چطور استنباط میکنید ؟! و اینکه پاسخ ندادین ، چیزی شبیه به ویدیو دوم رو میشه بصورت اصولی با این کتابخانه ایجاد کرد به نحوی که به انتها رسیدن اسکرول رو هم تشخیص بده ؟ (روشی که من استفاده کردم جدا بهینه و زیبا نیست.)
  10. تا الان که 5:30 صبح هست دارم تست میکنم. یه راه حل غیرمنطقی و غیر اصولی پیدا کردم که بازم بدلیل مشکلات کتابخانه با مشکل مواجه میشه. مشکل رو هم با ارسال کلیپ نشون میدم. در کلیپ زیر تصویر از سرور با کتابخانه picasso دانلود میشه اما بدون استفاده از کَش. بصورت زیر به آدرس یک عدد تصادفی اضافه میکنم که لینک تکراری نباشه که از کَش بخونه ، خودتون ببینید : picasso.LoadUrl(img_link & "?" & Rnd(1,12345678)).IntoImageView(img) لینک نتیجه : http://s3.picofile.com/file/8363816176/error1.mp4.html در کلیپ زیر نیز راه حل غیر اصولی که عرض کردم است ، دو ردیف از بالا را خالی نگه داشتم و پنل زیر ریسایکلر است و با اسکرول جابجا میشه. اما میبینید که با یک بار پایین و بالا شدن کتابخانه چند آیتم را الکی در ابتدای ریسایکلر اضافه میکنه... خیلی بررسی کردم و متوجه شدم کلا اینکار رو همیشه انجام میده اما زمانی که خانه ها گرید ویو پُر است این آیتم های اضافی و الکی زیر آیتم های واقعی قرار میگیرن و مشخص نیستن : http://s3.picofile.com/file/8363816226/error2.mp4.html نتیجه : در پشت صحنه ساخته شدن مجدد آیتم ها ، آیتم های اضافی در موقعیت های بی ربط ساخته میشه و سریعا با ایجاد آیتم های اصلی بر روی آیتم های اضافی ایجاد شده ، نمای مناسبی را مشاهده میکنید که احساس می شود مشکلی وجود ندارد. اما اگر چند آیتم اول را خالی بگذارید این موضوع محسوس است.
  11. جناب شاهپیری ، اینطور که پیدا است پیاده سازی این مورد با این کتابخانه اجرایی نیست . درست است ؟
  12. فداتون بشم من ، شما وارد اینستا بشین ، وارد یک پیج بشین. میبینید ساختارش شبیه به تصویری است که چند پست بالاتر ارسال کردم. در همون صفحه اینستا کمی اسکرول کنید... حالت های مختلف رو تست کنید. خب حالا کاری به سورس نداشته باشید. یک روش رو بیان کنید که بشه با اون چنین ساختاری رو پیاده کرد. فقط روش. شبیه به جناب شاهپیری که گفتن یک پنل و ریسایکلر رو در یک اسکرول ویو اضافه کنید. که این روش ما رو به نتیجه مورد نظر نمیرسوند و میشد بدون کدنویسی هم حدس زد.(البته با این حال بنده تست کرده بودم) گاهی مشکلات ساختاری هستن و باید بدون کدنویسی روشی رو مطرح و بررسی کرد.
  13. ممنون از رهنماییتون بنده همینکار رو میکنم و چون به نتیجه نمیرسم سوال رو مطرح میکنم. با سوالاتم دارم با ریسایکلر و روند کار باهاش آشنا میشم و تقریبا به جاهای خوبی رسیدم که الان بسته به نیازم مجددا متوقف شدم و سوال رو مطرح کردم و جناب شاهپیری هم پاسخ هاشون مشکلم رو برطرف نکرد و احتمالا دارن بهش فکر میکنن. منم هر چه تلاش میکنم به نتیجه نمیرسم. یک ریسایکلر لیست ویو هم ساختم و ابتدا یک پنل و بعدش یک ریسایکلر گرید ویو هم اضافه کردم اما اسکرول گرید ویو دیگه کار نمیکنه... و آیتم های گرید ویو هم درست اضافه نمیشن.
  14. اصلا این روش صحیح هم نیست. با حذف اسکرول ریسایکلر برای نمایش داده شدن تمام آیتم هاش باید طول ریسایکلر رو برابر با آخرین آیتمش قرار بدیم. با اینکار هم تمام آیتم ها در ابتدا ایجاد میشن. و با این روند ریسایکلر عملا ماهیتش رو از دست میده و عملا به اسکرول ویو تبدیل میشه...
  15. دقیقا این ایده هم به ذهنم رسید. اما دستورش رو نمیدونستم و با کلی دردسر همینو پیاده کردم. اما مشکل در این مرحله تغییر میکنه. به نحوی که باید طول پنل ریسایکلر رو بدونیم... چیزی شبیه به scroll.panel.height در اسکرول ویو/ چون اسکرول ریسایکلر دیگه کار نمیکنه پس باید ریسایکلر رو در حدی بزرگ کنیم تا تمام آیتم ها رو نمایش بده و با اسکرول کردن اسکرول ویو بشه آیتم های پایینتر رو دید.
  16. اینکار و کردم اما اسکرول ها مجزا هستن... یعنی وقتی انگشت روی ریسایکلر هست و اسکرول میکنی فقط بخش ریسایکلر اسکرول میشه... در واقع اسکرول ریسایکلر و اسکرول ویو مستقل از هم کار میکنن. اگر هم اسکرول اسکرول ویو فعال بشه و بره پایین و ریسایکلر تمام صفحه رو بگیره ، تا وقتی هم به ابتدای ریسایکلر نرسیم اسکرول ، اسکرول ویوو کار نمیکنه. انشالله متوجه منظورم شده باشید. البته چیز مشخصیه و کمی به روندش فکر کنید متوجه منظورم میشین.
  17. تصویر مربوطه پیوست شد : (ساختار پیج در اینستاگرام) با اسکرول کردن کل صفحه اسکرول میشه... حتی اگر انگشت روی بخش Panel باشه و اسکرول کنیم.
  18. جناب شاهپیری عزیز ، یه راهنمایی میفرمایید که چطور با ریسایکلر چیزی شبیه به صفحه نمایش یک پیج در اینستاگرام رو بسازم ؟ ابتداش یک پنله که مشخصات پیج هست... پس از اون پنل یک ریسایکلر گرید ویو هست که با اسکرول شدن اطلاعات نیز بالا میره و با به انتهای لیست رسیدن چند آیتم بعدی رو میگیره و به انتهای لیست که بصورت گرید ویو هست اضافه میکنه. (وقتی ریسایکلر اصلی رو گرید ویو میکنیم ، اون بخش بالا که اطلاعات پیج است هم بصورت گرید ویو نمایش داده میشه... ) اگر بخش اول رو در یک پنل و بخش دوم رو بصورت ریسایکلر در یک اسکرول ویو نمایش بدیم م اون چیزی که باید در نمیاد و اسکرول های ریسایکلر و اسکرول ویو مجزا هستن.
  19. آهان ، یعنی خود ریسایکلر با notifydatasetchange پاک میشه و مجددا مقادیر بهش اضافه میشن ؟ منظور من این بود اول ریسایکلر رو clear کنم ...
  20. حیف که انواع مختلف آیکون رفرش حذف شد... مشکل من همینه که متد clear رو نمیبینم که کل لیست رو پاک کنم ! روش خاصی داره برای رسیدن به این متد ؟
  21. جناب شاهپیری ، در ابتدا از این تلاش و همراهی شما جهت رفع مشکل سپاسگزارم. اما در این تلاش 3 سوال پیش میاد : 1. آیا متد setRefreshStyle رو حذف کردید ؟! چون اون تغییر نوع آیکون و پایین آمدن لیست کاربردی بود و میشد بسته به تم برنامه اون رو تنظیم کرد. مثلا اونکه شکل آب یا فلش از بالا و پایین میومد رو انتخاب کرده بودم. 2. آیا باید در متد setProgressViewEndTarget تعداد آیتم های داخل ریسایکلر وارد کرد تا آیکون رفرش بطور صحیح نمایش داده بشه ؟!! چون منطقی نیست و این تعداد ممکنه اضافه یا کسر بشه و ثابت نیست... و چرا باید بر اساس تعداد وضعیت رفرش شدن بررسی بشه ! چون رفرش با به ابتدا رسیدن اسکرول باید چک بشه. 3. در رویداد رفرش چطور لیست رو پاک کنم که مجددا دیتا رو از ابتدا از سرور بگیرم و اضافه کنم ؟ دستورات pr.notifyItemRangeRemoved و pr.notifyItemRemoved رو تست کردم نشد ... با تشکر
  22. جسارتا بالا عرض کردم که اصلا چنین متدی وجود خارجی نداره... منتظر رفع این مشکلم و یه جوابی بدید که در حال بررسی هستید یا خیر یا هر چیز دیگه ای ممنون میشم... اینجوری احساس میشه خدایی نکرده اهمیت نمیدین
  23. همانطور که بالا عرض کردم اصلا چنین متدی ( SetNestedScrollingEnabled ) وجود ندارد ! لطفا بررسی نمایید ...
  24. این دستور رو باید بعد از build شدنش بذارم ؟ اصلا متدی با نام SetNestedScrollingEnabled رو نمیشناسه !
  25. استاد آیتم رفرش مشکل داره... بنده از یک گرید ویو 3 تایی استفاده کردم... (46 آیتم رو از سرور بارگزاری و اضافه میکنه) گاهی با بالا رفتن در لیست الکی میخواد رفرش کنه. فکر کردم در شبیه ساز مشکل داره اما در دستگاه واقعی هم همینطوره...!! کلیپ ضبط شده رو ببینید... کمتر از 1 دقیقه است. http://s3.picofile.com/file/8363394642/refresh.mp4.html لطفا راهنمایی بفرمایید که چطور برطرفش کنم ؟
×
×
  • اضافه کردن...