نمایش اطلاعات در UltimateListView

سوال

سلام به همه.

من یه برنامه ای دارم که محیط چت برنامه رو با کمک کتابخانه UltimateListView ساختم.

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

اما واقعا نمیدونم چه جوری!!

اینم کدام:

Dim ULV As UltimateListView
	Dim lblMeasure As Label
	Dim Messages As List
	Dim VerticalPadding As Int


Sub Activity_Create(FirstTime As Boolean)

lblMeasure.Initialize("")
	lblMeasure.Background = LoadNinePatchDrawable("balloon_left")
	lblMeasure.TextSize = 18
	lblMeasure.Typeface = Typeface.DEFAULT
	lblMeasure.Visible = False
	
	Activity.AddView(lblMeasure, 0, 0, 85%x, 100%y)
	
	Dim r As Reflector, DrwRect As Rect
	r.Target = lblMeasure.Background
	DrwRect.Initialize(0, 0, 0, 0)
	r.RunMethod4("getPadding", Array As Object(DrwRect), Array As String("android.graphics.Rect"))
	VerticalPadding = DrwRect.Top + DrwRect.Bottom
	
	Messages.Initialize
'	Messages.Add("به بخش چت با متخصصین رایانک خوش آمدید. لطفا سوال لپ تاپی خود را بپرسید...")
	
	ULV.Initialize(0, 0, "", "")
	ULV.Color = Colors.RGB(33, 150, 243)
	
	ULV.DividerHeight = 15
	ULV.FadingEdges(False)
	ULV.StackFromBottom(False)
	
	ULV.TranscriptMode = ULV.TRANSCRIPT_ALWAYS_SCROLL
	AddLayoutAndItem(False, Messages.Size - 1)
	Activity.AddView(ULV,0,0,100%x,88%y)
End Sub

Sub AddLayoutAndItem(SentMsg As Boolean, MsgID As Int)
	Dim su As StringUtils
	Dim MsgHeight As Int = Max(10dip, su.MeasureMultilineTextHeight(lblMeasure, Messages.Get(MsgID))) + VerticalPadding

	Dim LayoutName As String
	
	If SentMsg Then
		LayoutName = "Sent" & MsgHeight'
	Else
		LayoutName = "Received" & MsgHeight'
	End If
	
	If Not(ULV.LayoutExists(LayoutName)) Then
		ULV.AddLayout(LayoutName, "Item_LayoutCreator", "Item_ContentFiller", MsgHeight, False)
	End If

	ULV.AddItem(LayoutName, MsgID)
End Sub

Sub Item_LayoutCreator(LayoutName As String, LayoutPanel As Panel)
	Dim lblText As Label
	lblText.Initialize("")
	If LayoutName.StartsWith("SENT") Then'باعث میشه تا حالت لیبل عوض بشه بین کاربر و ادمین
		lblText.Background = LoadNinePatchDrawable("balloon_left")'حالت بلونا
		lblText.TextColor = Colors.Red'رنگ لیبل یوزر
		lblText.SetVisibleAnimated(2000,True)
	Else
		lblText.Background = LoadNinePatchDrawable("balloon_right")'حالت بالونا
		lblText.TextColor = Colors.Blue'رنگ لیبل ادمین
		lblText.SetVisibleAnimated(2000,True)
	End If
	lblText.Gravity = Gravity.RIGHT'Gravity.TOP + Gravity.LEFT
	lblText.TextSize = lblMeasure.TextSize
	lblText.Typeface = lblMeasure.Typeface
	If LayoutName.StartsWith("SENT") Then'
		LayoutPanel.AddView(lblText, 15%x, 0, 85%x, LayoutPanel.Height)
	Else
		LayoutPanel.AddView(lblText, 0, 0, 85%x, LayoutPanel.Height)
	End If
End Sub

Sub Item_ContentFiller(ItemID As Long, LayoutName As String, LayoutPanel As Panel, Position As Int)
	Dim lblText As Label = LayoutPanel.GetView(0) 'First and only view in the panel
	lblText.Text = Messages.Get(ItemID)
End Sub

ub JobDone (job As HttpJob)
	If job.Success = True Then
		Select Case job.JobName
			
'			Case "ht_message"
'				education.j_p.Initialize(job.GetString)
'				Dim list As List= education.j_p.NextArray
'				For i=0 To list.Size-1
'					Dim map_title As Map=list.Get(i)
'					Messages.Add(map_title.Get("message"))
'				Next
End Sub

Sub LoadNinePatchDrawable(ImageName As String) As Object
	Dim r As Reflector
	Dim package As String
	package = r.GetStaticField("anywheresoftware.b4a.BA", "packageName")
	Dim ID_Drawable As Int
	ID_Drawable = r.GetStaticField(package & ".R$drawable", ImageName)
	r.Target = r.GetContext
	r.Target = r.RunMethod("getResources")
	Return r.RunMethod2("getDrawable", ID_Drawable, "java.lang.int")
End Sub

ممنون میشم کمکم کنید.

و این رو هم بگم که متغیر Message هست که همه چی درش لود میشه و نمایش داده میشه.

اما نمیدونم چه جوری متون داخل دیتابیس آنلاینو خط به خط توش لود کنم!!

امونمو بریده!!

0
, , , , ۱۳۹۷/۷/۲۰ ۲۳:۱۳:۱۶ 0 پاسخ ها همکار سایت 0

ارسال یک پاسخ