رفتن به مطلب
  • 0

ایجاد چند ویو با مختصات مختلف


montazeranmahdi

سوال

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

میخوام با یک حلقه چندتا باتن یا لیبل رو روی اکتیویتی لود کنم ، ممنون میشم کمک کنید

مثلا 4تا باتن زیر همدیگه

 با توجه مختصاتtop  که از قبل در یک فایل txt  تو پوشه برنامه هست

فرض بفرمایید متن داخل edittext  به این صورت است :

10

20

30

40

حالا میخوام 4 تا باتن که تاپشون رو به ترتیب از edittext میگیرن روی اکتیویتی ایجاد بشه

ممنون میشم از اساتید که کمک کنند ..

 

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

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

یک ادیت تکست داری یا برا هر باتون یک ادیت تکست؟

اگ یک ادیت تکسه.انگار میخوای با هر بار عدد ادیت تکس یه باتون بسازی؟

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

در 12 ساعت قبل، mahdi tahan گفته است :

یک ادیت تکست داری یا برا هر باتون یک ادیت تکست؟

اگ یک ادیت تکسه.انگار میخوای با هر بار عدد ادیت تکس یه باتون بسازی؟

خیلی ممنون از پاسخ شما بزرگوار:53:

کلا یک ادیت تکس

یا یک لیست ویو

فرقی نمیکنه ، البته بنظرم لیست ویو بهتره

فرض بفرمایید یک لیست ویو که 4 ردیف توشه به این صورت :

10

20

30

40

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

مثلا باتن 1 تاپش 10

باتن دوم تاپش 20

باتن سوم ...... 30

چهارم ........40

اگر هم بفرمایید که برای هر باتن به چه صورت امکان تعریف ساب click وجود داره ممنون میشم

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

نمدونم منظورتو درست فهمیدم یا نه

میتونی 4 تا باتون تو دیزانت تعریف کنی و چپ و راستشو بدی و همشونو مخفی کنی

بعد تو رویداد کلید لیست ویوت اینجوری بنویسی


Sub listview1_ItemClick (Position As Int, Value As Object)



Select Position
	
	Case 0
	Button1.Top=listview1.GetItem(Position)
	Button1.Visible=True	
	Case 1
		
	Button2.Top=listview1.GetItem(Position)
	Button2.Visible=True	
	Case 2	
	
	Button3.Top=listview1.GetItem(Position)
	Button3.Visible=True
	Case 3
	
	Button4.Top=listview1.GetItem(Position)
	Button4.Visible=True
End Select

End Sub

 

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

خیلی ممنون

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

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

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

.

.

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

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

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

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

در 7 دقیقه قبل، mahdi tahan گفته است :

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

نه ... یه حلقه با for میخوام که تو اکتیویتی کریت بنویسم که برنامه که اجرا شد 4 تا باتن درست کنه با مختصاتی که توی لیست ویو وجود داره

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

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

با حلقه اینطوری میشه

ScrollView1.Initialize(2000dip)
Activity.AddView(ScrollView1,0,0,100%x,100%y)
For i=0 To 3
Dim p As Button
ScrollView1.Panel.AddView(p,30%x,listview1.GetItem(Position),50%x,20%Y)
Next

اندازه ها رو باید بر هر مبنایی در نظر گرفتی درست کنی

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

در 5 دقیقه قبل، mahdi tahan گفته است :

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

با حلقه اینطوری میشه


ScrollView1.Initialize(2000dip)
Activity.AddView(ScrollView1,0,0,100%x,100%y)
For i=0 To 3
Dim p As Button
ScrollView1.Panel.AddView(p,30%x,listview1.GetItem(Position),50%x,20%Y)
Next

اندازه ها رو باید بر هر مبنایی در نظر گرفتی درست کنی

ممنون الان تست میکنم

نه باید لیست ویو باشه دیتابیس نمیشه(توضیحش مفصله)

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

آقا دم شما گرم ...

با یکم تغییرات درست شد

خداخیرت بده

ScrollView1.Initialize(2000dip)
    Activity.AddView(ScrollView1,0,0,100%x,100%y)
    Dim x As Int
    Dim p As Button
    p.Initialize("button")
    x=2
    For i = 1 To 5
    p.Initialize("items")
    p.Tag = i
        
        ScrollView1.Panel.AddView(p,30%x,ListView1.GetItem(x),50%x,20%Y)
        x=p.Tag
    Next

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

در 56 دقیقه قبل، mohammadjavadmajidi گفته است :

ممنون الان تست میکنم

نه باید لیست ویو باشه دیتابیس نمیشه(توضیحش مفصله)

آقا دم شما گرم ، بایکم تغییرات درست شد

خداخیرت بده:53:

 

ScrollView1.Initialize(2000dip)
    Activity.AddView(ScrollView1,0,0,100%x,100%y)
    Dim x As Int
    Dim p As Button
    p.Initialize("button")
    x=2
    For i = 1 To 5
    p.Initialize("items")
    p.Tag = i
        
        ScrollView1.Panel.AddView(p,30%x,ListView1.GetItem(x),50%x,20%Y)
        x=p.Tag
    Next

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

در در 27 مرداد 1399 در 12:56، mahdi tahan گفته است :

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

با حلقه اینطوری میشه


ScrollView1.Initialize(2000dip)
Activity.AddView(ScrollView1,0,0,100%x,100%y)
For i=0 To 3
Dim p As Button
ScrollView1.Panel.AddView(p,30%x,listview1.GetItem(Position),50%x,20%Y)
Next

اندازه ها رو باید بر هر مبنایی در نظر گرفتی درست کنی

سلام مجدد ، ضمن تشکر از پاسخگویی به سوالات ، خواستم بدونم راهی هست که ویوهایی که با این حلقه ایجاد کردیم رو با یک فرمان پاک کنیم ، مثلا یه باتن باشه که وقتی این ویوها ایجاد شدن ما روی اون باتن کلیک کنیم و ویوها مجددا حذف بشن

 

 

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

ممنونم

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

سلام

اگر میخواین کل ویوها تو اسکرول ویو پاک شه، از کد زیر استفاده کنید:

ScrollView1.Panel.RemoveAllViews

 

اگر هم خواستین، میتونید کل اسکرول ویو رو پاک کنید:

ScrollView1.RemoveView

 

اگر هم میخواین فقط دکمه های داخل اسکرول ویو پاک شن، از For Each استفاده کنید:

	For Each v1 As Button In ScrollView1.Panel.GetAllViewsRecursive
		v1.RemoveView
	Next

 

و در آخر اگر قصد دارین که دکمه هایی با تگ خاص، مثلا 1 تا n حذف شن، از تکه کد زیر استفاده کنید:

	Dim i As Int = 1
	For Each v1 As Button In ScrollView1.Panel.GetAllViewsRecursive
		
		If i = v1.Tag Then
			v1.RemoveView
		End If
		
		i = i + 1
	Next

 

 

سؤالی داشتید، در خدمتم

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

در در 31 مرداد 1399 در 16:35، Salar82 گفته است :

اگر هم میخواین فقط دکمه های داخل اسکرول ویو پاک شن، از For Each استفاده کنید:


	For Each p As Button In ScrollView1.Panel.GetAllViewsRecursive
		p.RemoveView
	Next

 

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

با ارور زیر مواجه میشه :


quranpage_play_click (java line: 1187)
java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.Button
    at madresehefz.qurankarim.quranpage._play_click(quranpage.java:1187)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
    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:7870)
    at android.view.View.performClickInternal(View.java:7839)
    at android.view.View.access$3600(View.java:886)
    at android.view.View$PerformClick.run(View.java:29363)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:7860)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

 

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

میدونید به چه خطی گیر میده؟

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

الان داره از لیبل ایراد میگیره!!!

 

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

در 29 دقیقه قبل، Salar82 گفته است :

میدونید به چه خطی گیر میده؟

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

الان داره از لیبل ایراد میگیره!!!

 

بنظر باید با سندر این کار رو انجام داد ولی من نمیدونم به چه صورت ... با سندر خاصیت کلیک رو میتونم تعریف کنم اما حذف ویو رو نمیدونم

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

من باتن ها رو بصورت زیر تو اسکرول ویو لود کردم

	Dim x As Int
	x=0
	For i = 1 To tedadayatsafhe
		p.Initialize("items")
		p.SetBackgroundImage(LoadBitmap(File.DirAssets,"r2.png"))
		p.Tag = i
		scrollpage.Panel.AddView(p,ListView2.GetItem(x),ListView1.GetItem(x),40dip,40dip)
		x=p.Tag
	Next

 

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

در ۱ ساعت قبل، Salar82 گفته است :

log بذارید ببینید از کجا ایراد میگیره

 

2mmy_untitled.png

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

بایگانی شده

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

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

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