رفتن به مطلب
  • 0

مشکل در رویداد کلیک


reza sabouri

سوال

سلام و خسته نباشید خدمت همگی

من در یک اکتیویت تعدادی لیبل دارم و برای هر لیبیل نیاز به یک لیست ویو دارم و برای آیتم های هر لیست ویو نیاز به فراخانی اطلاعات از دیتابیس هستم .

با کدهای زیر این مراحل رو طی میکنم.

Sub Process_Globals
	
	

End Sub

Sub Globals
	
	Dim scrollview1 As ScrollView

	Private Label1 As Label
	Private Label2 As Label
	Private Label3 As Label
	Private Label4 As Label
	Private Label5 As Label
	Private Label6 As Label
	Private Label7 As Label
	Private Label8 As Label
	Private Label9 As Label
	Private Label10 As Label
	Private Label11 As Label
	Private Label12 As Label
	Private Label13 As Label
	Private Label14 As Label
	Private Label15 As Label
	
	
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	Activity.LoadLayout("layoutscrollview")
	
	scrollview1.Panel.LoadLayout("Layout1")
	scrollview1.Panel.Height=Label15.top+Label15.height+48dip
		
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub Label1_Click
	StartActivity("splash1")
End Sub

Sub Label2_Click
	StartActivity("splash2")
End Sub

Sub Label3_Click
	
End Sub

Sub Label4_Click
	
End Sub

Sub Label5_Click
	
End Sub

Sub Label6_Click
	
End Sub

Sub Label7_Click
	
End Sub

Sub Label8_Click
	
End Sub

Sub Label9_Click
	
End Sub

Sub Label10_Click
	
End Sub

Sub Label11_Click
	
End Sub

Sub Label12_Click
	
End Sub

Sub Label13_Click
	
End Sub

Sub Label14_Click
	
End Sub

Sub Label15_Click
	
End Sub

و این جا هم از کدهای اکتیویتی splash1

Sub Process_Globals
	
	Dim sql1 As SQL
	Dim Cur1 As Cursor
	Dim st As String
End Sub

Sub Globals
	

	Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	Activity.LoadLayout("layout01")
	
	If File.Exists(File.DirInternal,"news.db") = False Then
	File.Copy(File.DirAssets,"news.db",File.DirInternal,"news.db")
	End If
	
	If sql1.IsInitialized = False Then
	sql1.Initialize(File.DirInternal,"news.db",True)
	End If
	
	Cur1 = sql1.ExecQuery("SELECT * FROM tbl1")
		For i = 0 To Cur1.RowCount-1
	Cur1.Position = i
	
	ListView1.AddSingleLine(Cur1.GetString("onvan"))
	
	Dim lbl  As Label
lbl= ListView1.SingleLineLayout.Label
lbl.Gravity=Gravity.CENTER
	
	Next
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub ListView1_ItemClick (Position As Int, Value As Object)
	st = Value
	StartActivity(splash01)
End Sub

و این هم از کدهای splash01

Sub Process_Globals
	
	Dim Cur1 As Cursor
	Dim sql1 As SQL
	
End Sub

Sub Globals
	
Private Label1 As Label

	
	Private ImageView1 As ImageView
End Sub

Sub Activity_Create(FirstTime As Boolean)


	Activity.LoadLayout("layouylabimg")

    If File.Exists(File.DirInternal,"news.db") = False Then
	File.Copy(File.DirAssets,"news.db",File.DirInternal,"news.db")
	End If
	
	If sql1.IsInitialized = False Then
	sql1.Initialize(File.DirInternal,"news.db",True)
	End If
		
    Cur1 = sql1.ExecQuery("SELECT * FROM tbl1 WHERE onvan='"&splash1.st&"'")
    For i=0 To Cur1.RowCount-1
    Cur1.Position=i
    Label1.Text = Cur1.GetString("matn")
		Label1.TextColor=Colors.White
	Label1.Gravity=Gravity.CENTER
	Label1.TextSize = 25
	splash1.st=0
	
	Dim Obj1 As Reflector
   Obj1.Target = Label1
   Obj1.RunMethod3("setLineSpacing", 1, "java.lang.float", 1.9, "java.lang.float")

	Dim bit1 As Bitmap
	   
    Cur1.Position = 0
    Dim Buffer() As Byte
    Buffer = Cur1.GetBlob("picture")
    Dim InputStream1 As InputStream
    InputStream1.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
    bit1.Initialize2(InputStream1)
    InputStream1.Close
	Cur1.Close
	ImageView1.Bitmap=bit1
	
	Next
		
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

الان سوال اینه که ::blush:

آیا برای هر پانزده مورد کلیک من باید همین کار رو بکنم ؟(واس هر کلیک دو تا اکتیویتی باز کنم )

یا اینکه راهی داره تا بتونم کدهارو در قسمت کلیک هاشون بنویسم (label1_click)

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

6 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

بجای این که از 15 تا لیبل استفاده کنید از 1 لیست ویو استفاده کنید . 15 تا آیتم بسازید و خلی راحت هم می تونید کلیک هاتون رو مدیریت کنید

در ضمن متن پیامتون خیلی طولانی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 1 ساعت قبل، softir گفته است :

بجای این که از 15 تا لیبل استفاده کنید از 1 لیست ویو استفاده کنید . 15 تا آیتم بسازید و خلی راحت هم می تونید کلیک هاتون رو مدیریت کنید

در ضمن متن پیامتون خیلی طولانی

خب اونوقت یابد دقیقا چیکار کنم ؟

حالا فرض کنید به جای لیبل ، لیست ویو دارم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود

هیچ کاری نیاز نیست

فقط دیتابیس رو  کپی میکنید و Initailize میکنید

بعدش

cur = sql.execquery("select *  f rom tbl")



for i = 0 to cur.rowcount-1

listview1.addsingleline(cur.getstring("txt"))

next

اطلاعات رو توی label نشون میدی

حالا رویداد itemClick برای کنترلش هست دیگه...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱ ساعت قبل، مهدی ایزدی گفته است :

درود

هیچ کاری نیاز نیست

فقط دیتابیس رو  کپی میکنید و Initailize میکنید

بعدش


cur = sql.execquery("select *  f rom tbl")



for i = 0 to cur.rowcount-1

listview1.addsingleline(cur.getstring("txt"))

next

اطلاعات رو توی label نشون میدی

حالا رویداد itemClick برای کنترلش هست دیگه...

ممنونم آقای ایزدی

بیزحمت یه لحظه به کدهای بالا با دقت نگاه کنید . من اومدم و رو لیبل ها یک عکس گذاشتم و تو لیبلها متنها رو نوشتم و بقیه ی متن هارو از دیتابیس گرفتم .

لیبل یک رو که میزنیم ، میرهیه لیست ویو میسازه و رو هر آیتم لیست ویو که میزنیم ، میره متنشو از دیتابیس میاره ، حالا موندم که باید واس همه ی label _click ها اونجوری عمل بکنم ؟

یعنی میشه اون دو تا  کدهای اکتیویتی های آخر رو تو خود label _click ها مشخص کنم ؟

اوجوری که میرم جلو ، هم اکتیویتی هام زیاد میشن و هم برنامه یکمی کند میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در هم اکنون، 2roshke گفته است :

ممنونم آقای ایزدی

بیزحمت یه لحظه به کدهای بالا با دقت نگاه کنید . من اومدم و رو لیبل ها یک عکس گذاشتم و تو لیبلها متنها رو نوشتم و بقیه ی متن هارو از دیتابیس گرفتم .

لیبل یک رو که میزنیم ، میرهیه لیست ویو میسازه و رو هر آیتم لیست ویو که میزنیم ، میره متنشو از دیتابیس میاره ، حالا موندم که باید واس همه ی label _click ها اونجوری عمل بکنم ؟

یعنی میشه اون دو تا  کدهای اکتیویتی های آخر رو تو خود label _click ها مشخص کنم ؟

اوجوری که میرم جلو ، هم اکتیویتی هام زیاد میشن و هم برنامه یکمی کند میشه

شما باید از این رویداد استفاده کنید

Sub ListView1_ItemClick (Position As Int, Value As Object)

End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اول از همه مانند دوستان دیگه منم وجود این همه لیبل رو صحیح نمی دونم

دوستان گفتند که از لیست ویو استفاده کنید.و درسته ولی چون شما شخصی سازی می خواین بکنید. بهتره از مولتی پنل استفاده کنید.

که دست شما رو کاملا باز می زاره.

در ضمن از تعریف اینهمه لیبل و رویداد هاشون رها میشین.

در مورد سوال زیر که پرسیده بودید

آیا برای هر پانزده مورد کلیک من باید همین کار رو بکنم ؟(واس هر کلیک دو تا اکتیویتی باز کنم )

سوالتون طوریه که انگار تفاوت های زیادی بین اکتیویتی های مربوط به هر لیبل هست.

اگه این طور باشه. که جدا بودن اکتیویتی ها براتون راحتتره

و فقط زمانی بهتره اکتیویتی ها رو یکی کنین که مثلا ظاهرشون یکی باشه و همچنین تفاوت هاشون کم باشن

مثلا در اکتیویتی splash1 شما اسم جدول هم شماره داره tbl1 خب اگه فقط جداول پایگاه داده متفاوت ولی ساختارشون مثل همه  و تفاوت کمی دارند و کدهای متناظرشون هم تقریبا مشابه باشه بهتره به همون صورتی که اطلاعات رو از splash1  به اکتیویتی splash01 از طریق Process_Globals ارسال کردین . عمل کنین .

و با چند شرط تفاوت ها رو اعمال کنین. که معمولا دیگران هم همین کار رو می کنند.

«موفق باشید.»

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...