اطلاعیه

کاربر گرامی

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

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


mja89

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

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

سلام دوستان

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

لیبل های زیر از طریق دیزاینر اضافه میشه :

lb_title , lbcat , lb_user

و لیبل  و ویوهای زیر از طریق کد نویسی در اسکرول ویو اضافه میشه :

lb_text , ed_text , bt_send , commentlistview , 

کارایی این اکتیویتی هم به این صورت هستش که متن ایتم های لیست ویو اکتیویتی قبل رو نشون میده که بهمراه اون : عنوان - فرستنده - دسته بندی  نیز نمایش داده میشود. همچنین در قسمت انتهایی متن تکست یک عدد ادیت تکست و باتن جهت ارسال نظرات به این مطلب و در زیر این دو یک عدد لیست ویو جهت نمایش نظرات ارسالی به متن تکست قرار میگیره.

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

برای همین اومدم متن تکست رو که داخل لیبل (lb_text) لود میشه رو به اکتیوتی اضافه کردم تا اینجاش خوب پیش میره اما همین که میخوام بعد لیبل تکست ایدت تکست و باتن و لیست ویو رو قرار بدم  هنگام ران برنامه وقتی رو ایتم لیست ویو کلیک میشه مشخصات فرستنده و متن نشون داده میشه اما به بقیه ویو ها که میرسه اخطار زیر رو میده :

show_eideh_jobdone (java line: 797)
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
	at android.view.ViewGroup.addViewInner(ViewGroup.java:3562)
	at android.view.ViewGroup.addView(ViewGroup.java:3415)
	at android.view.ViewGroup.addView(ViewGroup.java:3391)
	at anywheresoftware.b4a.objects.PanelWrapper.AddView(PanelWrapper.java:65)
	at b4a.example.show_eideh._jobdone(show_eideh.java:797)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:191)
	at anywheresoftware.b4a.keywords.Common$11.run(Common.java:1154)
	at android.os.Handler.handleCallback(Handler.java:733)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:136)
	at android.app.ActivityThread.main(ActivityThread.java:5019)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
	at dalvik.system.NativeStart.main(Native Method)
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

کد های استفاده شده تو اکتیویتی هم اینا هستن :


Sub Activity_Create(FirstTime As Boolean)
	lb_text.Initialize("")
	lb_text.TextColor = Colors.White
	lb_text.Gravity = Gravity.RIGHT
	lb_text.Typeface = font
	lb_text.TextSize = 18
	lb_title.Typeface = font
	lb_cat.Typeface = font
	lb_user.Typeface = font
	
	bt_send.Initialize("")
	ed_text.Initialize("")
	bt_send.Typeface = font
	ed_text.Typeface = font
	ed_text.TextSize = 14
	ed_text.TextColor = Colors.Red
	ed_text.Hint = "پیام خود را بنویسید..."
	bt_send.Text = "ارسال"
	bt_send.TextColor = Colors.White
	bt_send.Color = ac.GetThemeAttribute("colorAccent")
	bt_send.TextSize = 12
	
	
	CommentListView.Initialize("CommentListView")
	CommentListView.Color = Colors.ARGB(100,181,108,0)
	
	user_name = C1.GetString("Name_Family")
	lb_Sender.Initialize("")
	lb_Sender.Text = user_name
	
	GetData("get_comment","http://exe.ir/mysql_b4a/get_news.php","SELECT * FROM comment ORDER BY id DESC WHERE cod = " & hime.meghdar ,False,Null)
	GetData("get_news","http://exe-coding.ir/mysql_b4a/get_news.php","SELECT * FROM tbl_news WHERE id = " & home.meghdar ,True,"صبر کنید...")

	auto_reload.Initialize("auto_reload",15000)
	auto_reload.Enabled = True
End Sub

Sub Activity_Resume

End Sub
Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub JobDone(job As HttpJob)
	
	If job.Success Then
		Dim res As String
		res = job.GetString
		
		Dim parser As JSONParser
		parser.Initialize(res)
		
		If job.JobName = "get_news" Then
			Dim dat As List
			dat = parser.NextArray
			For i = 0 To dat.Size -1
				Dim m As Map
				m = dat.Get(i)
			
				lb_title.Text = m.Get("title")
				lb_user.Text= m.Get("user")
				lb_cat.Text = m.Get("cat")
				id = m.Get("id")
				lb_text.Text = m.Get("text")
		
			Next
					
			SV.Panel.AddView(lb_text,0,1%x,93%x,50%y)
			lb_text.Height = stu.MeasureMultilineTextHeight(lb_text,lb_text.Text) + 2%y
			SV.Panel.AddView(bt_send,0,lb_text.Height + 2%y , 23%x , 8%y )
			SV.Panel.AddView(ed_text,23.1%x , lb_text.Height + 1%y , 100%x , 10%y )
		End If
		
		Dim res1 As String
		res1 = job.GetString
		
		Dim parser1 As JSONParser
		parser1.Initialize(res1)
		CommentListView.Clear
		If job.JobName = "get_comment" Then
			Dim view As List
			view = parser1.NextArray
			For i = 0 To view.Size -1
				Dim m1 As Map
				m1 = view.Get(i)
		
				CommentListView.AddTwoLines2(" " & m1.Get("sender") & " : " , " " & m1.Get("comment") , m1.Get("id") )
		
			Next
			SV.Panel.AddView(CommentListView,0,lb_text.Height + 12%y,100%x,CommentListView.Height)
			SV.Panel.Height = CommentListView.Height + 3%y
		End If
					
							
		If job.JobName = "add_comment" Then
			ProgressDialogHide
			ed_text.Text = ""
		Else
			Log(job.ErrorMessage)
		End If
		
	End If
	
End Sub

Sub GetData(JobName As String,Link As String,Query As String,Progress As Boolean,ProgressText As String)
	Dim job1 As HttpJob
	job1.Initialize(JobName,Me)
	job1.PostString(Link,Query)
		
End Sub

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

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


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

 این بخش رو مثال میزنم

		If job.JobName = "get_news" Then
			Dim dat As List
			dat = parser.NextArray
			For i = 0 To dat.Size -1
				Dim m As Map
				m = dat.Get(i)
			
				lb_title.Text = m.Get("title")
				lb_user.Text= m.Get("user")
				lb_cat.Text = m.Get("cat")
				id = m.Get("id")
				lb_text.Text = m.Get("text")
		
			Next
					
			SV.Panel.AddView(lb_text,0,1%x,93%x,50%y)
			lb_text.Height = stu.MeasureMultilineTextHeight(lb_text,lb_text.Text) + 2%y
			SV.Panel.AddView(bt_send,0,lb_text.Height + 2%y , 23%x , 8%y )
			SV.Panel.AddView(ed_text,23.1%x , lb_text.Height + 1%y , 100%x , 10%y )
		End If

به این.

		If job.JobName = "get_news" Then
			Dim dat As List
			dat = parser.NextArray
			For i = 0 To dat.Size -1
				Dim m As Map
				m = dat.Get(i)
				
				lb_title.initialize("")
				' بقیه هم به همین صورت باید ساخته بشه.

				lb_title.Text = m.Get("title")
				lb_user.Text= m.Get("user")
				lb_cat.Text = m.Get("cat")
				id = m.Get("id")
				lb_text.Text = m.Get("text")
		

			SV.Panel.AddView(lb_text,0,1%x,93%x,50%y)
			lb_text.Height = stu.MeasureMultilineTextHeight(lb_text,lb_text.Text) + 2%y
			SV.Panel.AddView(bt_send,0,lb_text.Height + 2%y , 23%x , 8%y )
			SV.Panel.AddView(ed_text,23.1%x , lb_text.Height + 1%y , 100%x , 10%y )

			Next
					

		End If

 

 

 

خیلی راحت با نرم افزار (چاقو همه کاره دیزاینر) ، میتونید آیتم های اسکرول ویو رو بسازید.

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


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

ممنون از راهنماییت عزیز اما :

lbl_title -cats-user

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

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


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

مشکل حل شد همه کد ها رو برون دیزاینر به اسکرول ویو دادم اکی شد .

حالا چرا خدا داند؟؟؟؟

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

چون من لیست ویو رو داخل اسکرول ویو لود کردم برای مشخص کردن ارتفاع لیست ویو مشکل دارم و مثل کتابخانه stringuntil براش ندیدم که اندازه خودکار لیست ویو رو دربیاره و به ناچار مثلا 50 درصد بهش ارتفاع میدم حالا اگه لیست ویو یه دونه ایتم داشت همون 50 درصد رو داره اگه 100 تا داشت هم همون یه درصد باز.

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

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


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

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

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

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

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

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

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

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

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