رفتن به مطلب

کتابخانه PersianRecyclerView ***(نسخه جدید)***


ارسال‌های توصیه شده

در ۱۴۰۰/۶/۸ در 08:42، batman123 گفته است:

سلام.

یه آموزش ویدئویی کامل در رابطه با این persianRecyclerView میشه بذارید.

من هرچی گشتم پیدا نکردم.

ممنون

کسی آموزش این کتابخونه رو نداره؟

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

  • پاسخ 612
  • ایجاد شده
  • آخرین پاسخ

بیشترین ارسال‌ها در این موضوع

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

***************نسخه 4.6 اضافه شد************** ویژگی اضافه شده تو این نسخه ریپل افکت هست که دوستان درخواست داده بودند.  سورس و کتابخونه رو میتونید از پنل دریافت کنید. پیشنمایش.  

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

ممنون از کتابخانه خوبتون

تصاویر ارسال شده

در ۱۴۰۰/۶/۹ در ۰۰:۳۳، batman۱۲۳ گفته است:

کسی آموزش این کتابخونه رو نداره؟

دوست عزیز این کنابخونه نزدیک به ۱۰ ساعت آموزش واسش تولید شده.پست اول این تاپیک رو ببینید...

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

  • 2 هفته بعد...

سلام وقت بخیر،

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

Error occurred on line: 2434 (M_Star)
java.lang.NullPointerException: Attempt to read from field 'android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView' on a null object reference
	at com.persian.recycler.core.RecyclerLayout.GetViewForPosition(RecyclerLayout.java:2046)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
	at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
	at android.view.View.performClick(View.java:5215)
	at android.view.View$PerformClick.run(View.java:21196)
	at android.os.Handler.handleCallback(Handler.java:742)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:157)
	at android.app.ActivityThread.main(ActivityThread.java:5601)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)

میشه یه کمکی کنید که بتونم همه ویو هارو بدون کلک رشتی(یه متغیر که موقع لود آیتم بیاد از اون بخونه) اینکار رو بکنم؟

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

من اومدم رویداد تکست چنج ادیت تکست رو اومدم نوشتم که بیاد توی طبق postion (با تگ و سندر)بیاد مقدار تکست ویو رو با تغییر ذخیره کنه اما گویا موقع تغییر در ادیت متن ادیت تکست بعضی مواقع ساب فراخوانی میشه بعضی مواقع ساب فراخوانی میشه اما توی Sender میاد یه چیز از ریسایکلر رو میده که این خطاشه.

کدم:

Sub txt_TextChanged (Old As String, New As String)
	If Sender Is EditText Then
		Dim txt As EditText = Sender
		If txt.IsInitialized = True Then
			Log(txt.Text)
			Dim map As Map = List.Get(((Page-1)*tedadSoulperpage)+txt.Tag)
			map.Put("Javab",txt.Text)
		End If
	End If
End Sub

خطاش

Error occurred on line: 1477 (M_Start_Azmoon)
java.lang.ClassCastException: com.persian.recycler.adapter.RecyclerAdapter cannot be cast to android.widget.TextView
	at anywheresoftware.b4a.objects.TextViewWrapper.getText(TextViewWrapper.java:36)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
	at java.lang.reflect.Method.invoke(Native Method)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
	at anywheresoftware.b4a.shell.DebugResumableSub$RemoteResumableSub.resume(DebugResumableSub.java:22)
	at anywheresoftware.b4a.keywords.Common$13.run(Common.java:1714)
	at android.os.Handler.handleCallback(Handler.java:742)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:157)
	at android.app.ActivityThread.main(ActivityThread.java:5601)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)

 

چیکار کنم؟

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

  • 2 ماه بعد...

سلام

مهندس شاهپیری یه سوال 

فکر میکنم قبلا این متد رو کتابخانه داشت

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

هرچی فکر میکنم متدش یادم نمیاد توی کتابخانه هم نیافتمش!

ممنون میشم راهنمایی کنید

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

در ۱۴۰۰/۸/۲۶ در ۲۳:۰۴، For گفته است:

سلام

مهندس شاهپیری یه سوال 

فکر میکنم قبلا این متد رو کتابخانه داشت

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

هرچی فکر میکنم متدش یادم نمیاد توی کتابخانه هم نیافتمش!

ممنون میشم راهنمایی کنید

سلام و درود. این مورد رو gravity snap میگن. تو مرحله آخر میتونید ست کنید

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

در ۱۴۰۰/۸/۲۶ در 23:33، محمدرضا شاهپیری گفته است:

سلام و درود. این مورد رو gravity snap میگن. تو مرحله آخر میتونید ست کنید

یه توضیح لطف میکنید که ورودی هاش چی هستن

Untitled.png

 

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

GravityPagerSnap(pr.GRAVITY_START,True)
/////////////////////////////////////////
GravitySnap(pr.GRAVITY_START,True)

 

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

  • 2 ماه بعد...
در ۱۴۰۰/۸/۲۷ در 01:48، محمدرضا شاهپیری گفته است:

 

سلام مهندس

ببخشید یه سوال

من توی هر آیتم از ریسایکلر 4تا لیبل دارم، میخوام با کلیک روی آیتم یکی از لیبل ها مخفی بشه با کلیک مجدد همون لیبل نمایش داده بشه به همین ترتیب 

قبلا کنترل ویوهارو توی ریسایکلر انجام داده بودم یعنی با کلیک روی ویو میتونستم رنگ یا ... رو تغییر بدم

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

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

در ۱۴۰۰/۱۱/۷ در ۰۲:۲۵، For گفته است:

سلام مهندس

ببخشید یه سوال

من توی هر آیتم از ریسایکلر 4تا لیبل دارم، میخوام با کلیک روی آیتم یکی از لیبل ها مخفی بشه با کلیک مجدد همون لیبل نمایش داده بشه به همین ترتیب 

قبلا کنترل ویوهارو توی ریسایکلر انجام داده بودم یعنی با کلیک روی ویو میتونستم رنگ یا ... رو تغییر بدم

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

سلام. من دقیقا متوجه سوالتون نشدم. روی لیبل میخواید کلیک کنید و مخفی بشه؟

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

در ۱۴۰۰/۱۱/۷ در ۱۱:۵۱، محمدرضا شاهپیری گفته است:

سلام. من دقیقا متوجه سوالتون نشدم. روی لیبل میخواید کلیک کنید و مخفی بشه؟

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

 

XRecorder_27012022_115929.gif

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

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

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

مهندس جان فکر کنم خیلی واضح عرض کردم

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

 

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

حالا شاید بشه یک پنل Transparentروی کل ویوها گذاشت واسه اینکه روی دیگر ویوها کلیک نخوره

 

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

در ۱۴۰۰/۱۱/۷ در 14:18، For گفته است:

مهندس جان فکر کنم خیلی واضح عرض کردم

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

 

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

حالا شاید بشه یک پنل Transparentروی کل ویوها گذاشت واسه اینکه روی دیگر ویوها کلیک نخوره

 

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

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

در ۱۴۰۰/۱۱/۷ در ۱۹:۴۳، محمدرضا شاهپیری گفته است:

 

سلام، ممنون

اینو واسه بررسی  ثبت کلیک درنظر گرفتم درست عمل میکنه

	If itms.CheckClick = False Then
		Log("check")
		itms.CheckClick = True
	Else If itms.CheckClick = True Then
		Log("uncheck")
		itms.CheckClick = False
	End If
	RCV.notifyDataSetChanged

ببینید مشکل اینه وقتی روی آیتم کلیک میشه کل لیبل ها درون آیتم مخفی میشن

بحث اصلی اینه که توی این شرط چطور فقط و فقط لیبل مدنظرم مدیریت بشه، چون نمیشه شرط برابری تگ با آیتم تگ رو گذاشت چون قرار نیست روی خود لیبل کلیک بشه پس if "lbl" = itemTag then کارایی نداره

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

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

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

recyclerLable.zip

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

  • 2 ماه بعد...

سلام خسته نباشید چطوری میشه خط سیاه بین هر ایتم رو برداشت یا تغییر رمگ داد یا مثلا قطرش رو بزرگ کرد ممنون

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

در ۱۴۰۱/۱/۲۴ در ۰۰:۵۵، koke_sa گفته است:

سلام خسته نباشید چطوری میشه خط سیاه بین هر ایتم رو برداشت یا تغییر رمگ داد یا مثلا قطرش رو بزرگ کرد ممنون

خط سیاه بین آیتمها اسمش DividerItemDecoration هست و در صورتی اضافه میشه که خودتون دستورشو اضافه کنید.

به دو صورت هم اضافه میشه. یکی دستور withDefaultDividier هست که پیشفرضه و نمیتونید روش تغییری ایجاد کنید. واسه اینکه خط دلخواه اضافه کنید باید از متد withCustomDividier استفاد کنید که یه Drawable میگیره

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

سلام وقت بخیر

 

استاد شاهپیری من قبلا یک پروژه نوشته بودم و بدون مشکل رانش میکردم. الان بعد از حدود یک سال میخوام دوباره اجراش بکنم، خطای زیر رو میده.

تمام sdk هم به تازگی آپدیت کردم.

موقع ران گرفتن از بقیه پروژه ها مشکلی ندارم و فقط با PersianRecylerView این مشکل به وجود میاد

 

 

1.PNG

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

در ۱۴۰۱/۱/۲۹ در ۱۶:۰۲، Amir - B گفته است:

سلام وقت بخیر

 

استاد شاهپیری من قبلا یک پروژه نوشته بودم و بدون مشکل رانش میکردم. الان بعد از حدود یک سال میخوام دوباره اجراش بکنم، خطای زیر رو میده.

تمام sdk هم به تازگی آپدیت کردم.

موقع ران گرفتن از بقیه پروژه ها مشکلی ندارم و فقط با PersianRecylerView این مشکل به وجود میاد

عزیز این مشکلات به طور قطع از Sdk هست. حتما از sdk خود سایت مرجع استفاده کنید مشکلی نداره کتابخونه

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

در ۱۴۰۱/۱/۲۹ در ۲۱:۲۹، محمدرضا شاهپیری گفته است:

عزیز این مشکلات به طور قطع از Sdk هست. حتما از sdk خود سایت مرجع استفاده کنید مشکلی نداره کتابخونه

 

استاد من sdk ام رو پاک کردم و دوباره طبق سایت بیسیک نصب کردم و تو sdk manager بیسیک، recommonded ها رو نصب کردم. موقع ران گرفتن از برنامه برای recyclerview، نیاز به sdk های androidX داره.

 

من یکبار extras پیوستی شما رو دانلود کردم و تو sdk ی خودم قرار دادم که چون در extras شما کلا در مسیر زیر نسخه 1.7.0 قرار نداشت خطا میگرفت و مجبور شدم خودم دانلود کنم تا این نسخه رو داشته باشم.

...\extras\b4a_remote\androidx\core\core

 

 

برای همین چون فایل های extras رو نداشتم، مجبور شدم که از sdk manger بیسیک، androidX رو سرچ کنم و تمام ایتم ها رو دانلود کنم. وقتی اینکار رو کردم، همون خطای قبلی رو نمایش میده

 

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

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

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

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

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

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

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

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

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

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