من از سورس زیر برای نمایش رکوردهام استفاده کرده ام بخاطر اینکه تعداد رکورد ها خیلی زیاده اونارو 20 تا 20 تا لود میکنم
برای جستجو در رکوردها در jost_Click (دکمه جستجو) از کوئری زیر استفاده کرده ام:
cur = sql1.ExecQuery("SELECT * FROM beh WHERE onvan like '%" & AutoCompleteEditText1.Text & "%' LIMIT 0,20")
حالا مشکل من اینه که نتایج جستجو رو میبره آخر اسکرول ویو نمایش میده.(یعنی باید کلی اسکرول ویو رو پایین برد تا به ته اسکرول ونتایج جستجو رسید)
مشکل از کجاست؟ .تشکر
Sub Process_Globals
Private sql1 As SQL
Private cur As Cursor
Dim meqdar As String
End Sub
Sub Globals
Private inx As Int = 0
Private sv As ScrollView
Private PanelHeight As Int = 5dip
Private STU As StringUtils
Dim ht1,ht2 As Float
Private yekan As Typeface = Typeface.LoadFromAssets("yekan.ttf")
Private jost As Button
Private AutoCompleteEditText1 As AutoCompleteEditText
End Sub
Sub Art(txt As String,leb As Label,font As Typeface,size As Int,lebGravity As Int,lebTextColor As Int) As Float
Dim ht As Float
Dim before,after As Float
Dim Obj1 As Reflector
leb.text = txt
leb.TextSize = size
leb.Gravity = lebGravity
leb.TextColor = lebTextColor
leb.Left = leb.Left
leb.Typeface = font
ht = STU.MeasureMultilineTextHeight(leb , txt)
Obj1.Target = leb
before = Obj1.RunMethod("getLineHeight")
Obj1.Target = leb
Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.3, "java.lang.float")
Obj1.Target = leb
after = Obj1.RunMethod("getLineHeight")
ht = ((after * ht)/before)
leb.Height = ht
Return ht
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Serch")
If File.Exists(File.DirRootExternal ,"data.db") = False Then _
File.Copy(File.DirAssets,"data.db",File.DirRootExternal,"data.db")
If sql1.IsInitialized=False Then
sql1.Initialize(File.DirInternal,"data.db",False)
End If
LoadRecords
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub LoadRecords()
cur = sql1.ExecQuery("SELECT * FROM tbl1 WHERE id > " & inx & " LIMIT 0,20")
For i = 0 To cur.RowCount-1
cur.Position = i
Dim pnl As Panel : pnl.Initialize("pnl")
Dim lblEn As Label : lblEn.Initialize("")
lblEn.text = cur.GetString("onvan")
sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0)
pnl.Color = Colors.RGB(0, 108, 153)
pnl.AddView(lblEn,10dip, 0 , pnl.Width - 20dip, 0)
ht2 = Art( lblEn.text , lblEn , yekan,17 , Gravity.LEFT , Colors.Black )
pnl.Height = ht1+ht2
pnl.Tag=cur.GetString("id")
PanelHeight = PanelHeight + pnl.Height + 1dip
inx = inx + 1
Next
sv.Panel.Height = PanelHeight
Activity.Title = "Total Loaded Records : " & inx
End Sub
Sub sv_ScrollChanged(Position As Int)
If (Position+sv.Height) >= PanelHeight Then
LoadRecords
DoEvents
End If
End Sub
Sub jost_Click ' <====================کلید جستجو
sv.Panel.RemoveAllViews
cur = sql1.ExecQuery("SELECT * FROM beh WHERE onvan like '%" & AutoCompleteEditText1.Text & "%' LIMIT 0,20")
For i = 0 To cur.RowCount-1
cur.Position = i
Dim pnl As Panel : pnl.Initialize("pnl")
Dim lblEn As Label : lblEn.Initialize("")
lblEn.text = cur.GetString("onvan")
sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0)
pnl.Color = Colors.RGB(0, 108, 153)
pnl.AddView(lblEn,10dip, 0 , pnl.Width - 20dip, 0)
ht2 = Art( lblEn.text , lblEn , yekan,17 , Gravity.LEFT , Colors.Black )
pnl.Height = ht1+ht2
pnl.Tag=cur.GetString("id")
PanelHeight = PanelHeight + pnl.Height + 1dip
inx = inx + 1
Next
sv.Panel.Height = PanelHeight
Activity.Title = "Total Loaded Records : " & inx
End Sub
Sub pnl_Click
Dim b As Panel
b=Sender
meqdar=b.Tag
StartActivity(nmysh)
End Sub
سوال
nadersalim 5
سلام دوستان
من از سورس زیر برای نمایش رکوردهام استفاده کرده ام بخاطر اینکه تعداد رکورد ها خیلی زیاده اونارو 20 تا 20 تا لود میکنم
برای جستجو در رکوردها در jost_Click (دکمه جستجو) از کوئری زیر استفاده کرده ام:
cur = sql1.ExecQuery("SELECT * FROM beh WHERE onvan like '%" & AutoCompleteEditText1.Text & "%' LIMIT 0,20")حالا مشکل من اینه که نتایج جستجو رو میبره آخر اسکرول ویو نمایش میده.(یعنی باید کلی اسکرول ویو رو پایین برد تا به ته اسکرول ونتایج جستجو رسید)
مشکل از کجاست؟ .تشکر
Sub Process_Globals Private sql1 As SQL Private cur As Cursor Dim meqdar As String End Sub Sub Globals Private inx As Int = 0 Private sv As ScrollView Private PanelHeight As Int = 5dip Private STU As StringUtils Dim ht1,ht2 As Float Private yekan As Typeface = Typeface.LoadFromAssets("yekan.ttf") Private jost As Button Private AutoCompleteEditText1 As AutoCompleteEditText End Sub Sub Art(txt As String,leb As Label,font As Typeface,size As Int,lebGravity As Int,lebTextColor As Int) As Float Dim ht As Float Dim before,after As Float Dim Obj1 As Reflector leb.text = txt leb.TextSize = size leb.Gravity = lebGravity leb.TextColor = lebTextColor leb.Left = leb.Left leb.Typeface = font ht = STU.MeasureMultilineTextHeight(leb , txt) Obj1.Target = leb before = Obj1.RunMethod("getLineHeight") Obj1.Target = leb Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.3, "java.lang.float") Obj1.Target = leb after = Obj1.RunMethod("getLineHeight") ht = ((after * ht)/before) leb.Height = ht Return ht End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Serch") If File.Exists(File.DirRootExternal ,"data.db") = False Then _ File.Copy(File.DirAssets,"data.db",File.DirRootExternal,"data.db") If sql1.IsInitialized=False Then sql1.Initialize(File.DirInternal,"data.db",False) End If LoadRecords End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub LoadRecords() cur = sql1.ExecQuery("SELECT * FROM tbl1 WHERE id > " & inx & " LIMIT 0,20") For i = 0 To cur.RowCount-1 cur.Position = i Dim pnl As Panel : pnl.Initialize("pnl") Dim lblEn As Label : lblEn.Initialize("") lblEn.text = cur.GetString("onvan") sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0) pnl.Color = Colors.RGB(0, 108, 153) pnl.AddView(lblEn,10dip, 0 , pnl.Width - 20dip, 0) ht2 = Art( lblEn.text , lblEn , yekan,17 , Gravity.LEFT , Colors.Black ) pnl.Height = ht1+ht2 pnl.Tag=cur.GetString("id") PanelHeight = PanelHeight + pnl.Height + 1dip inx = inx + 1 Next sv.Panel.Height = PanelHeight Activity.Title = "Total Loaded Records : " & inx End Sub Sub sv_ScrollChanged(Position As Int) If (Position+sv.Height) >= PanelHeight Then LoadRecords DoEvents End If End Sub Sub jost_Click ' <====================کلید جستجو sv.Panel.RemoveAllViews cur = sql1.ExecQuery("SELECT * FROM beh WHERE onvan like '%" & AutoCompleteEditText1.Text & "%' LIMIT 0,20") For i = 0 To cur.RowCount-1 cur.Position = i Dim pnl As Panel : pnl.Initialize("pnl") Dim lblEn As Label : lblEn.Initialize("") lblEn.text = cur.GetString("onvan") sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0) pnl.Color = Colors.RGB(0, 108, 153) pnl.AddView(lblEn,10dip, 0 , pnl.Width - 20dip, 0) ht2 = Art( lblEn.text , lblEn , yekan,17 , Gravity.LEFT , Colors.Black ) pnl.Height = ht1+ht2 pnl.Tag=cur.GetString("id") PanelHeight = PanelHeight + pnl.Height + 1dip inx = inx + 1 Next sv.Panel.Height = PanelHeight Activity.Title = "Total Loaded Records : " & inx End Sub Sub pnl_Click Dim b As Panel b=Sender meqdar=b.Tag StartActivity(nmysh) End Subلینک ارسال
به اشتراک گذاری در سایت های دیگر
17 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.