02-11-2014، 04:41 PM
نقل قول:درود دوستانیه سوال دارم میدونم کمی سخته ولی خواهشا هر کس بلده جوابمو بده سپاسگزارم ؛
من یه فایل اس کیو ال دارم که خیلی سنگینه حدود 100000 ردیف داره
ردیفهای جدول عیارتند از : name groups fav delete pic
حالا من واسه هر ردیف یک فاوریت و حذف و عکس قرار دادم
اول از همه چطور میتونم عکس رو از توی دیتا بیس فراخونی کنم؟
دوم اینکه من واسه هر ستون یه پنل معرفی کردم که هر پنل دارای 2 لیبل و 2 باتون و 1 عکس هست که پنل ها رو پشت سر هم داخل یک اسکرول چیدم که کاملا صحیح نمایش میده و بغیر از عکس همشون درست کار میکنند ولی ولی ولی وقتی تعداد زیادتر از 300 تا میشه برنامه هنگ میکنه و هیچ چیزی رو نشون نمیده
من فکر میکنم چون طول اسکرول زیاد میشه برنامه قابلیت کامپایلشو از دست میده
من چندتا برنامه با اسکرول بالا دیدم که به آهستگی عمل لود رو انجام میدن یعنی پله پله و اسکرول در صورتی بزرگتر میشود که شما آن را به پایین بکشد و به انتهای اسکرول برسید اسکرول دوباره لود شده و تعدادی پنل دیگر به برنامه اضافه میکند.
خیلی ممنون میشم اگه جوابمو بدید خیلی خیلی سپاسگذارم.این کد کل برنامه ایه که از سایت بیسیک گرفتم زمانی کهکد پیاچپی:#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim scvMain As ScrollView
Dim PanelNb As Int : PanelNb = 20
Dim PanelHeight As Int : PanelHeight = 150dip
Dim sql1 As SQL
Dim cursor1 As Cursor
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim i, n As Int
If sql1.IsInitialized = False Then
sql1.Initialize(File.DirInternal, "pish.sql", False)
End If
cursor1 = sql1.ExecQuery("SELECT * FROM tbl1")
scvMain.Initialize(cursor1.RowCount - 1*50)
Activity.AddView(scvMain, 0, 0, 100%x, 100%y)
' Activity.LoadLayout("ScrollViewNLayouts")
For i = 0 To PanelNb - 1
Dim pnl As Panel
pnl.Initialize("pnlTest")
scvMain.Panel.AddView(pnl, 0, 5dip + i * PanelHeight, 100%x, PanelHeight)
pnl.LoadLayout("Layout")
pnl.Tag = i
For n = 0 To pnl.NumberOfViews - 1
pnl.GetView(n).Tag = i
Next
Dim lbl As Label
lbl = pnl.GetView(0)
lbl.Text = "Test " & i
Dim btn As Button
btn = pnl.GetView(1)
btn.Text = "Test " & i
If (i Mod 2)=1 Then
pnl.Color = Colors.DarkGray
Else
pnl.Color = Colors.Gray
End If
Next
scvMain.Panel.Height = PanelNb*PanelHeight
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub lblTest_Click
Dim lbl As Label
lbl = Sender
Activity.Title = "Label " & lbl.Tag
End Sub
Sub btnTest_Click
Dim btn As Button
Dim edt As EditText
Dim lbl As Label
Dim pnl As Panel
Dim row As Int
btn = Sender
row = btn.Tag
pnl = scvMain.Panel.GetView(row)
lbl = pnl.GetView(0)
edt = pnl.GetView(1)
lbl.Text = edt.Text
Activity.Title = "Button " & btn.Tag
End Sub
Sub pnlTest_Click
Dim pnl As Panel
pnl = Sender
Activity.Title = "Panel " & pnl.Tag
End Sub
Sub scvmain_ScrollChanged(Position As Int)
PanelNb = PanelNb+PanelNb
End Subرو زیاد میکنم برنامه هنگ میکنهکد پیاچپی:PanelNb
یه راحی میخوام بشه اینو پله پله بالا ببرم
سپاسگزارم دوستان.
درود
واسه عکس بهتره فایل ها رو تو یه مسیری بریزی بعد مثلا اسم فایل رو تو فیلد جدول ذخیره کنی
دیگه فقط کافیه اسم فایل رو از فیلد بخونی و از همون مسیر خودت لود کنی.
اما این اسکرول که گفتی :
با این کدی که شما نوشتی هنگ نکنه جای تعجب داره.
بهترین راه هم همونیه که خودت گفتی یعنی وقتی به انتهای اسکرول میرسی مثلا 10 تا دیگه لود بشه.
واسه این کار هم از خاصیت Position اسکرول کمک بگیر.
کد پیاچپی:
Sub SCV1_ScrollChanged(Position As Int)
End Sub