من از سورس زیر برای نمایش رکوردهام استفاده کرده ام بخاطر اینکه تعداد رکورد ها خیلی زیاده اونارو 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 (دکمه جستجو) از کوئری زیر استفاده کرده ام:
حالا مشکل من اینه که نتایج جستجو رو میبره آخر اسکرول ویو نمایش میده.(یعنی باید کلی اسکرول ویو رو پایین برد تا به ته اسکرول ونتایج جستجو رسید)
مشکل از کجاست؟ .تشکر
لینک ارسال
به اشتراک گذاری در سایت های دیگر
17 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.