اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


محمدرضا شاهپیری

لود لیمیت و مولتی پنل با استفاده از PersianRecyclerview و persianfastnetwork

16 ارسال در این موضوع قرار دارد

سلام به همه دوستان. خیلی از دوستان تو ساخت مولتی پنل که اطلاعاتشو از دیتابیس آنلاین میگیره با  ریسایکلر مشکل داشتن. یه آموزش بسیار خوب و کامل براتون آماده کردیم که تو اون به راحتی میتونید این مسئله رو پیاده کنید و واضح اونو درک کنید. آموزش واقعا بی نظیره. کسانی که کتابخونه رو دارن حتما دانلود کنن که اشکالاتشون برطرف شه.

 

لینک آموزش.

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


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

سلام

خیلی ممنون واقعا زحمت کشیدید اما ای کاش واسه ارسال و دریافت اطلاعات از کتابخانه های رایگان استفاده میکردید مث JSON , OKHttp ... شاید کسی اون کتابخانه رو نداشته باشه و بخواد از سورس خروجی بگیره اگر هدف رفع اشکال ریسایکلر هست باید فقط از این کتابخانه استفاده میشد و دیگر کتابخانه ها رایگان استفاده میشد تا واسه کسایی که فقط ریسایکلر داشتند قابل استفاده میشد اینجور فقط روش پیاده سازیش به درد امثال من میخوره که کتابخانه نتورک شمارو ندارند! به هر حال ممنون

اما مشکل بنده همچنان پا برجاست از دیروز که توی اون تاپیک گفتم تا این لحظه درتلاشم اما به هیچ صراطی مستقیم نیس دقیقا از قبل هم همین کارای که شما انجام دادید رو دادم و خروجی گرفتم بدون مشکل فقط یه مشکل توی نمایش هست

 

مثلا تعداد رکورد دیتابیس من ۱۰تاست

وقتی از برنامه ران میگیرم توی ریسایکلر ۱۰تا پنل ایجاد میشه اما اطلاعات هر ۱۰ آیتم ریسایکلر فقط اطلاعات آخرین ریکورد دیتابیسم هست. اینجوری میشه گفت توی دریافت اطلاعات مشکلی نیست چون به تعداد ریکوردها آیتم اضافه کرده پس مشکل از کجا میتونه باشه؟ طبق اموزش شماهم لیست و آیتم اضافه کردم کدهارو ببینید:

 

Sub Globals

	Type items (id As String, t1 As String)
	Dim item As items
  	Dim itm As items
	Private lis As List
	Private PersianRecyclerView1 As PersianRecyclerView
	Dim pradapt As PRVB4AAdapter
	
End Sub


Sub JobDone (job1 As HttpJob)
	If job1.Success Then
		Try
		If job1.JobName = "ht" Then
			Dim parser As JSONParser
			parser.Initialize(job1.GetString)
			Dim Data As List
			Data.Initialize
			Data = parser.NextArray
  			For Each MapData As Map In Data
  				item.Initialize
				item.Id = MapData.Get("id")
				item.t1 = MapData.Get("t1")
  
				lis.Add(item)
				pradapt.notifyDatasetChange
  			Next
				rcy
		End If
	Catch
		Log(LastException)
	End Try
		Else
		Msgbox("Error","Error")
	End If
End Sub
  
Sub pr_onBindViewHolder(itemPanel As Panel,position As Int,viewtype As Int)
	
	itemPanel.Width = 100%X
	itemPanel.Height = 21%y
  
	itm = lis.Get(position)
	
	Dim panel As Panel = itemPanel.GetView(0)
	Dim lbl1 As Label = panel.GetView(0)
	Dim p As Panel = panel.GetView(6)

	p.Tag = itm.id
	lbl1.Text = itm.t1
	
End Sub

 

یکی راهنمایی کنه لطفا

 

----------

 

راستی توی فیلم اموزشی شما لیمیت ۱۵ تایی دادید. آیا ریسایکلر نیازمند لیمیت هست؟ تقریبا هر بار بدون هنگ چه تعداد میتونه لود کنه؟ چون من بخاطر هنگ کردن مولتی پنل و اسکرول ویو اومدم سمت این کتابخانه ایا توی اینم باید انقدر لیمیت پایین بدم؟!

مرسی

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


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

تلف نشین حاجی:malih:

به نظرم شاید مشکل دیتایی هست که میگیرین. اسکرین از دیتابیس بزارید و اینکه فایل php رو هم پیوست کنید. و احتمالا مشکل از یکی از همین دوتا باشه.

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، محمدرضا شاهپیری گفته است :

تلف نشین حاجی:malih:

به نظرم شاید مشکل دیتایی هست که میگیرین. اسکرین از دیتابیس بزارید و اینکه فایل php رو هم پیوست کنید. و احتمالا مشکل از یکی از همین دوتا باشه.

همین دیتا با همین فایل پی اچ پی روی پروژه اصلی که با مولتی پنل هست سواره و مشکلی نداره و اطلاعات رو دریافت و نمایش میده !

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


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

عزیز یه اشکال جدی به نظرم دارین. شما اومدین آیتم رو سراسری تعریف کردین. نباید همچین کاری بکنید. باید هر آیتم رو تو حلقه تعریف مقداردهی و اونو به لیست بدین. تو حلقه زیر اشتباه کردین اصن کلا مشخصه طبق آموزشا پیش نرفتین هم خودتونو اذیت کردین هم ما رو. من تو آموزشا آیتم رو اینجوری تعریف نکردم عزیز . حلقه زیر اشتباهه اولا نوتیفی رو تو حلقه گذاشتین. بعد آیتم رو باید تو حلقه تعریف کنید و اینشیالایز کنید نه اینکه تو گلو بال.

For Each MapData As Map In Data
      item.Initialize
      item.Id = MapData.Get("id")
      item.t1 = MapData.Get("t1")
      lis.Add(item)		
      pradapt.notifyDatasetChange ///// این اینجا چیکار میکنه؟؟؟
    Next

به این صورت میشه حلقه.

For Each MapData As Map In Data
      Dim item As items
      item.Initialize
      item.Id = MapData.Get("id")
      item.t1 = MapData.Get("t1")
      lis.Add(item)		
 Next
  pradapt.notifyDatasetChange

متد زیر رو هم که اشتباه نوشتید  :unknown: تو خود متد تعریف کنید itm رو.

Sub pr_onBindViewHolder(itemPanel As Panel,position As Int,viewtype As Int)
	
	itemPanel.Width = 100%X
	itemPanel.Height = 21%y
  
	itm = lis.Get(position) //////// آیتم رو همینجا تعریف کن. نه تو گلوبال
	
	Dim panel As Panel = itemPanel.GetView(0)
	Dim lbl1 As Label = panel.GetView(0)
	Dim p As Panel = panel.GetView(6)

	p.Tag = itm.id
	lbl1.Text = itm.t1
	
End Sub

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 47 دقیقه قبل، محمدرضا شاهپیری گفته است :

عزیز یه اشکال جدی به نظرم دارین. شما اومدین آیتم رو سراسری تعریف کردین. نباید همچین کاری بکنید. باید هر آیتم رو تو حلقه تعریف مقداردهی و اونو به لیست بدین. تو حلقه زیر اشتباه کردین اصن کلا مشخصه طبق آموزشا پیش نرفتین هم خودتونو اذیت کردین هم ما رو. من تو آموزشا آیتم رو اینجوری تعریف نکردم عزیز . حلقه زیر اشتباهه اولا نوتیفی رو تو حلقه گذاشتین. بعد آیتم رو باید تو حلقه تعریف کنید و اینشیالایز کنید نه اینکه تو گلو بال.


For Each MapData As Map In Data
      item.Initialize
      item.Id = MapData.Get("id")
      item.t1 = MapData.Get("t1")
      lis.Add(item)		
      pradapt.notifyDatasetChange ///// این اینجا چیکار میکنه؟؟؟
    Next

به این صورت میشه حلقه.

متد زیر رو هم که اشتباه نوشتید  :unknown: تو خود متد تعریف کنید itm رو.

 

مهندس جان

هموطن جان

قربون مهارت و تجربت برم من

فیلم خودتو باور داری؟

pradapt.notifyDatasetChange اینو خودتون توی حلقه گذاشتی توی فیلم برید فیلم خودتون رو ببینید اگه غیراز این بود شماره کارت خصوصی کنید تا همین الان ۱ تومن واریز کنم !!!!

وقتی بردمش بیرون از حلقه مشکل حل شد

itm ر وهم گلوبال گذاشتم که بتونم از مقادیرش در قسمتهای دیگه استفاده کنم که مشکلی نداره.

سوال پایانی و خداحافظی

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

 

بهر حال از تلاش و زحمات و قضاوتتون سپساگذارم.

یا حق

 

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


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

ریسایکلر ویو هیچ محدویتی تو لود هیچ تعدادی آیتم نداره. ولی این خیلی غلط اندازه و دوستان اشتباه متوجه شدن مفهومشو.  ببینید درواقع اون چیزی که مشخص میکنه هنگ میکنه یا نه پروسه ایه که شما اطلاعات رو آماده میکنید و بهش میدید. مثلا شما میاید یه دیتابیس با یک میلیون رکورد رو میخونید توی لیست میریزید(همینجا برنامه کرش میشه احتمالا و دیگه به ادامه نمیرسه) و بعد میخواید به ریسایکلر بدید. دو مرحله است این. یکی خوندن و ریختن توی لیست و مرحله بعد دادن به ریسایکلر هست. اون چیزی که مهمه مرحله یک هست چون همه ی بار تو این مرحله به پردازنده وارد میشه وگرنه ریسایکلر اگه 100 میلیون آیتم آماده باشه هم بهش بدین هیچ تاثیری نداره روش. به شرطی که آیتمها آماده باشن. نه اینکه آیتمها رو از سرور یا از دیتابیس بخواین بگیرین. لیمیت واسه خوندن و آماده کردن دیتاهاست نه لود کردن آیتمها که ریسایکلر انجام میده.

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

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 17 ساعت قبل، محمدرضا شاهپیری گفته است :

سلام به همه دوستان. خیلی از دوستان تو ساخت مولتی پنل که اطلاعاتشو از دیتابیس آنلاین میگیره با  ریسایکلر مشکل داشتن. یه آموزش بسیار خوب و کامل براتون آماده کردیم که تو اون به راحتی میتونید این مسئله رو پیاده کنید و واضح اونو درک کنید. آموزش واقعا بی نظیره. کسانی که کتابخونه رو دارن حتما دانلود کنن که اشکالاتشون برطرف شه.

 

لینک آموزش.

سلام خدمت آقای شاهپیری عزیز 

خیلی ممنونم از زحماتتان و ارائه کتابخانه خوبتان 

 

ببخشید یه نگاهی به فایل ارسالیتان recyclerlimitload.7z میاندازید؟

موقع Extract برای من وسط کار  خطا میده وفایل فیلم ها رو استخراج نمیکنه !

 باتشکر

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 ساعت قبل، نورنما گفته است :

سلام خدمت آقای شاهپیری عزیز 

خیلی ممنونم از زحماتتان و ارائه کتابخانه خوبتان 

 

ببخشید یه نگاهی به فایل ارسالیتان recyclerlimitload.7z میاندازید؟

موقع Extract برای من وسط کار  خطا میده وفایل فیلم ها رو استخراج نمیکنه !

 باتشکر

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

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


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

سلام

چندتا سوال

۱- چطور میشه لیست رو خالی کرد؟ مثلا وقتی مولتی پنل رو میدیم به اسکرول ویو با s.removeallview لیست رو خالی میکنیم واسه قسمتهایی مث رفرش و سرچ که باید لیست خالی بشه و اطلاعات رو دوباره بارگذاری کنه

۲- رو همین سورس میشه رفرش ریسایکلر رو پیاده کرد؟ چون رفرشش آداپتورش xml هست آیا میشه از PersianRefereshRecyclerView با لایوت بیسیک کار کرد؟

۳- چطور میشه موقعیت اسکرول رو رفت واسه مخفی کردن یک پنل؟ مثلا اگر آیتم ها روبه بالا رفت پنل مخفی و وقتی روبه پایین اسکرول شد پنل نمایش داده بشه؟

مرسی

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


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

سلام. دارم رو نسخه جدید کتابخونه کار میکنم که با اندروید استودیو رپ میشه و تغییرات عظیمی صورت میگیره انشالا. چون خودم حس میکنم کتابخونه به این نحو خیلی پراکنده هست و کاربرای عزیز یه کم سخته براشون کار کردن با کتابخونه.  وفعلا دوستان منتظر یه آپدیت فوقلاده باشید.

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، محمدرضا شاهپیری گفته است :

سلام. دارم رو نسخه جدید کتابخونه کار میکنم که با اندروید استودیو رپ میشه و تغییرات عظیمی صورت میگیره انشالا. چون خودم حس میکنم کتابخونه به این نحو خیلی پراکنده هست و کاربرای عزیز یه کم سخته براشون کار کردن با کتابخونه.  وفعلا دوستان منتظر یه آپدیت فوقلاده باشید.

اره حتما جمع و جورتش کن من فیلم های اموزشی هایتکس ریسایکلر رو دیدم واقعا لذت بردم

الان واسه مورد اول(مهمتر) و سوم نمیشه هیچ کاری کرد ؟

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


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

اره حتما جمع و جورتش کن من فیلم های اموزشی هایتکس ریسایکلر رو دیدم واقعا لذت بردم

الان واسه مورد اول(مهمتر) و سوم نمیشه هیچ کاری کرد ؟

اینها که موردی ندارن عزیز. واسه خالی کردن شما اول باید لیست رو خالی کنید با دستور clear فکر کنم.  بعد متد notifydatasetchange از آداپتر رو صدا بزنید.

برای مورد دوم خیر. رفرش با xml هست.

برای مورد سوم فعلا امکان گرفتن پوزیشن حین اسکرول نیست. انشالا تو آپدیت لحاظ میشه

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 14 دقیقه قبل، محمدرضا شاهپیری گفته است :

اینها که موردی ندارن عزیز. واسه خالی کردن شما اول باید لیست رو خالی کنید با دستور clear فکر کنم.  بعد متد notifydatasetchange از آداپتر رو صدا بزنید.

 

هیچ دستوری واسه خالی کردن و clear وجود نداره و الان بشدت مشکلم اینه و اومدم یه پروژه سنگین که چندماه روز و شب روش کار کردم رو از مولتی پنل و اسکرول ویو تغییر دادم به ریسایکلر الان متوجه شدم که این دستور رو نداره و نمیتونم دوباره ریسایکلر رو حذف کنم و اسکرول ویو و مولتی پنل استفاده کنم فقط بیش از ۱۲ اکتیویتی این موارد استفاده شده الان فقط مشکلم تو دوتا اکتیویتی هست که روی دکمه کلیک میشه لیست باید خالی بشه و آیتم های جدید لود بشن اگه لیست خالی نشه اطلاعات قبلی حفظ میشن و اطلاعات جدید هم اضافه میشن و هر آیتم مثلا دوبار نشون داده میشه

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، محمدرضا شاهپیری گفته است :

دوست عزیز. لیست دستور clear داره. 


Dim list1 As List
	list1.Clear

 

مرسی مهندس خالی کردن اون لیست رو میدونم

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

یه مورد دیگه که سعی کنید تو اپدیت بعد مدنظر داشته باشید اینه که موقع اسکرول کردن اگه به صفحه ای دیگه (اکتیویتی) بری برنامه استوپ میشه و خارج میشه

 به هر حال ممنون

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


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

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری