porya 959 ارسال شده در 12 مرداد، 2016 اشتراک گذاری ارسال شده در 12 مرداد، 2016 با عرض سلام و احترام خدمت همه دوستان عزیزتو خیلی از تاپیک ها دیده شده که خیلی از دوستان این مشکل رو دارند که چرا وقتی یک سری آیتم های که داخل اسکرول ویو پشت سر هم ادد میکنم و وقتی میخوام اون ایتم ها رو پاک کنیم ایتم ها پاک میشوند ولی فضای زیادی به اندازه اون ایتم های پاک شده باقی میمونه و آیتم های بعدی که لود میکنم بعد از فضای اون ایتم های پاک شده قرار میگیره و یا این مشکل بیشتر در هنگام سرچ کردن درمولتی پنل اتفاق میفته که ایتم ها بعد از هر بار سرچ کردن به صورت تکرار شده پشت سرم هم قرار میگیرند که این خیلی بده...بنده تو خیلی از تاپیک ها یکی از راهکارهاشو قرار دادم و گفتم بد نیست تو این بخش به صورت آموزش متنی به طور خلاصه قرار بدم تو این آموزش بنده با مثال سرچ کردن در مولتی پنل این مشکل رو برطرف میکنم فرض بر این میگیریم که کار با مولتی پنل رو بلدید و اگر کمی و کاستی داشت به بزرگی خودتون ببخشید.خب اول میام متغییر هامون رو تعریف میکنم. Sub Process_Globals Dim sql1 As SQL Dim cursor1 As Cursor End Sub Sub Globals Private ScrollView1 As ScrollView Private Label1 As Label Dim stop As Int = 1%y Private EditText1 As EditText End Sub از متغییرهای sql و cursor برای استفاده از دیتابیس و متغییرهای ScrollView1 و stop برای ساخت مولتی پنل و متغییر label برای نمایش مقدار گرفته شده از دیتابیس و متغییرEditText1 برای سرچ در مولتی پنل استفاد میکنیم.در بخش Activity_Create مولتی پنل رو میسازیم. Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("scv") If File.Exists(File.DirInternal,"porya.db") = False Then File.Copy(File.DirAssets,"porya.db",File.DirInternal,"porya.db") End If If sql1.IsInitialized = False Then sql1.Initialize(File.DirInternal,"porya.db",True) End If cursor1 = sql1.ExecQuery("SELECT * FROM porya") For i = 0 To cursor1.RowCount-1 cursor1.Position = i Dim p As Panel p.Initialize("p") ScrollView1.Panel.AddView(p,0,stop,88.2%x,100%y) stop = stop + 16%y p.LoadLayout("multi") Label1.Text = cursor1.GetString("name") Label1.TextSize = 23 Label1.Gravity = Gravity.CENTER Label1.TextColor = Colors.Black ScrollView1.Panel.Height = stop Next End Sub و بعد با استفاده ازEditText1 و رویداد (Sub EditText1_TextChanged (Old As String, New As String میام سرچ رو انجام میدیم. Sub EditText1_TextChanged (Old As String, New As String) ScrollView1.Panel.RemoveAllViews stop = ScrollView1.Height - ScrollView1.Height ScrollView1.ScrollPosition = stop cursor1 = sql1.ExecQuery("SELECT * FROM porya WHERE name LIKE '%" & EditText1.Text & "%'") For i = 0 To cursor1.RowCount-1 cursor1.Position = i Dim p As Panel p.Initialize("p") ScrollView1.Panel.AddView(p,0,stop,88.2%x,100%y) stop = stop + 16%y p.LoadLayout("multi") Label1.Text = cursor1.GetString("name") Label1.TextSize = 23 Label1.Gravity = Gravity.CENTER Label1.TextColor = Colors.Black ScrollView1.Panel.Height = stop Next End Sub به این چند خط کد زیر دقت کنید این کدها دقیقا اون کار اصلی یعنی همون clear کردن ایتم ها رو انجام میده اگه این چند خط کد رو بردارید می بینید که با هربار سرچ ایتم ها به صورت تکرار و پشت سرم هم قرار میگیرند اما با استفاده از این چند خط کد میتوانید این مشکل رو برطرف کنید این کدها میاد ایتم های قبلی رو پاک میکنه و شروع ایتم های بعدی رو با استفاده از متغییر top به جای همون ایتم های قبلی که پاک کردیم قرار میده با کمی خلاقیت میتونید این کدها رو در جاهای که مشکلاتی که پیش تر عرض شد وجود داشت استفاده کنید. ScrollView1.Panel.RemoveAllViews stop = ScrollView1.Height - ScrollView1.Height ScrollView1.ScrollPosition = stop خیلی ممنون که بنده رو همراهی کردید امیدوارم از این اموزش راضی و براتون مفید بوده باشه. موفق باشید. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسال های توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.