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

تغییر تصویر بوکمارک در لحظه کلیک


mahdig502

سوال

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

قبلا استاد ایزدی مشکلما حل کرد اما الان متوجه شدم 

وقتی روی دکمه بوکمارک کلیک میکنم همون لحظه تصویر عوض نمیش 

یعنی باید یکبار برگردم و دوباره برم توی اکتیویتی تا عوض بشه 

این کد 

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("sv1")
	
	If File.Exists(File.DirInternal,"smslove.db")=False Then
	File.copy(File.DirAssets,"smslove.db",File.DirInternal,"smslove.db")
	End If
	SQL1.Initialize(File.DirInternal,"smslove.db",True)
	cur1 = SQL1.ExecQuery("SELECT * FROM tbllove")
	
	myfont = Typeface.LoadFromAssets("BTraffic.ttf")
	
	For i=0 To cur1.RowCount-1
	cur1.Position=i
	text= cur1.GetString("smslove")
	
	ScrollView1.Panel.Color = Colors.Transparent	
	Dim p1 As Panel
	p1.Initialize("")
	p1.LoadLayout("sms")
	ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)  
	share.Tag = i
	copy.Tag = i
	Btnlike.Tag = cur1.GetString("id")
	ht=art(text,Label1,myfont,20)
	Label1.TextColor=Colors.White
	p1.Height=ht+70dip
	PanelHeight=PanelHeight+ht+70dip
	Dim check As Int                                                                                       ''''''''''''''''''''''''''''''''''
    check = cur1.Getint("fav")                                                                          ''''''''''''''''''''''''''''''''''
If check=0 Then                                                                                               
Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"noheart.png"))   
 Else If check=1 Then                                                                                     
Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"heart.png"))       
 End If                                                                                                               
	Next                                                                                                         
	ScrollView1.Panel.Height=PanelHeight                                                 
End Sub 
                                                                                                           

لطفا راهنمایی کنید :53:

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

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

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

دوست عزیز مشکلتون خیلی عجیب غریب بود.  :wacko1:

به هرحال بنده از یه روشی استفاده کردم تا فعلا کارتون راه بیافته کدهای زیر رو جایگزین اکتیویتی s1 کنید فقط لایوت sms رو از دیزاینر مقدار animation duration  رو به 0 تغییر بدید.   :cheshmak:

#Region  Activity Attributes 
	#FullScreen: true
	#IncludeTitle: false
#End Region

Sub Process_Globals
	Dim SQL1 As SQL
	Dim cur1 As Cursor
End Sub

Sub Globals

	Private ScrollView1 As ScrollView
	Private copy As Button
	Private share As Button
	Private Panel1 As Panel
	Private Label1 As Label
	Dim text As String
	Dim ht As Float
	Dim StrUtil As StringUtils
	Dim PanelHeight As Int
	Dim myfont As Typeface
	Dim sh As AriaLib
	Private Btnlike As Button
	
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("sv1")
	
	If File.Exists(File.DirInternal,"smslove.db")=False Then
	File.copy(File.DirAssets,"smslove.db",File.DirInternal,"smslove.db")
	End If
	
	If SQL1.IsInitialized = False Then
	SQL1.Initialize(File.DirInternal,"smslove.db",True)
	End If
	
	cur1 = SQL1.ExecQuery("SELECT * FROM tbllove")
	
	myfont = Typeface.LoadFromAssets("BTraffic.ttf")
	
	For i=0 To cur1.RowCount-1
	cur1.Position=i
	text= cur1.GetString("smslove")
	
	ScrollView1.Panel.Color = Colors.Transparent	
	Dim p1 As Panel
	p1.Initialize("")
	ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100%y)
	p1.LoadLayout("sms") 
	share.Tag = i
	copy.Tag = i
	Btnlike.Tag = cur1.Getint("id")
	ht=art(text,Label1,myfont,20)
	Label1.TextColor=Colors.White
	p1.Height=ht+70dip
	PanelHeight=PanelHeight+ht+70dip

	Dim check As Int
    check = cur1.Getint("fav") 
	If check=0 Then
	Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"noheart.png"))
    Else If check=1 Then
	Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"heart.png"))
    End If
	Next
	ScrollView1.Panel.Height=PanelHeight
End Sub

Sub art(txt As String,leb As Label,font As Typeface,size As Int) As Float      
Dim before,after As Float
	Dim Obj1 As Reflector
		leb.text=txt
		leb.TextSize=size
		leb.Gravity=Gravity.CENTER
		leb.Left=leb.Left
		leb.Typeface=font
	ht = StrUtil.MeasureMultilineTextHeight(leb , txt)
            Obj1.Target = leb  
            before = Obj1.RunMethod("getLineHeight")
            Obj1.Target = leb 
            Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.5, "java.lang.float")
            Obj1.Target = leb 
            after = Obj1.RunMethod("getLineHeight")
            ht = ((after * ht)/before)
		leb.Height = ht
Return  ht

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub share_Click
	Dim cursor3 As Cursor
    cursor3 = SQL1.ExecQuery("SELECT smslove FROM tbllove")
    Dim btn2 As Button
    btn2=Sender
    cursor3.Position =btn2.Tag
    Dim matnsms As Label
    matnsms.Initialize("")
    matnsms.text=cursor3.GetString("smslove")
    cursor3.Close
	StartActivity(sh.ShareText(matnsms.text,"اشتراک گذاری با :"))
End Sub

Sub copy_Click
	Dim something As BClipboard
	Dim cursor2 As Cursor
	cursor2 = SQL1.ExecQuery("SELECT smslove FROM tbllove")
	Dim btn2 As Button
	btn2=Sender
	cursor2.Position =btn2.Tag
	something.clrText 
    something.settext(cursor2.GetString("smslove"))
	ToastMessageShow("متن در کلیپ بورد کپی شد",False)
	cursor2.Close
End Sub

Sub Btnlike_Click
	
	Dim btn2 As Button
	btn2=Sender
	
	Dim sqlnew As SQL
	Dim curnew As Cursor
	
	If sqlnew.IsInitialized = False Then
	sqlnew.Initialize(File.DirInternal,"smslove.db",True)
	End If
	
	curnew = sqlnew.ExecQuery("SELECT * FROM tbllove where id ="&btn2.Tag)
	curnew.Position = 0
	
	Dim check As Int
    check = curnew.Getint("fav")    
	
	
	If check = 0 Then
		
	sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 1 WHERE id = "&btn2.Tag)
	Dim btm As BitmapDrawable
	btm.Initialize(LoadBitmap(File.DirAssets,"heart.png"))
	Btnlike.Background=btm
	ToastMessageShow("به علاقه مندی ها اضافه شد",False)	
	ScrollView1.Panel.RemoveAllViews
	PanelHeight = ScrollView1.Height - ScrollView1.Height
	ScrollView1.ScrollPosition = PanelHeight
	Activity_Create(True)
	Else If check = 1 Then
	
	sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 0 WHERE id = "&btn2.Tag)
	Dim btm As BitmapDrawable
	btm.Initialize(LoadBitmap(File.DirAssets,"noheart.png"))
	Btnlike.Background=btm
	ToastMessageShow("از علاقه مندی ها حذف شد",False)
	ScrollView1.Panel.RemoveAllViews
	PanelHeight = ScrollView1.Height - ScrollView1.Height
	ScrollView1.ScrollPosition = PanelHeight
	Activity_Create(True)
	End If
	
End Sub

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


Sub Btnlike_Click

Dim btn2 As Button

btn2=Sender

Dim sqlnew As SQL

Dim curnew As Cursor

sqlnew.Initialize(File.DirInternal,"smslove.db",True)

curnew = sqlnew.ExecQuery("SELECT * FROM tbllove where id ="&btn2.Tag)

curnew.Position = 0

Dim check As Int

check = curnew.Getint("fav")

If check = 0 Then

Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"noheart.png"))

sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 1 WHERE id = "&btn2.Tag)

ToastMessageShow("به علاقه مندی ها اضافه شد",False)

Else If check = 1 Then

Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"heart.png"))

sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 0 WHERE id = "&btn2.Tag)

ToastMessageShow("از علاقه مندی ها حذف شد",False)

End If

End Sub

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

ساب کلیک علاقمندی رو به این صورت تست کنید.

Sub Btnlike_Click
	Dim btn2 As Button
	btn2=Sender
	Dim sqlnew As SQL
	Dim curnew As Cursor
	sqlnew.Initialize(File.DirInternal,"smslove.db",True)
	curnew = sqlnew.ExecQuery("SELECT * FROM tbllove where id ="&btn2.Tag)
	curnew.Position = 0
	
	Dim check As Int
    check = curnew.Getint("fav")    
	If check = 0 Then
	Dim btm As BitmapDrawable
	btm.Initialize(LoadBitmap(File.DirAssets,"heart.png"))
	Btnlike.Background=btm
	sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 1 WHERE id = "&btn2.Tag)
	ToastMessageShow("به علاقه مندی ها اضافه شد",False)		 
	Else
	Dim btm As BitmapDrawable
	btm.Initialize(LoadBitmap(File.DirAssets,"noheart.png"))
	Btnlike.Background=btm
	sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 0 WHERE id = "&btn2.Tag)
	ToastMessageShow("از علاقه مندی ها حذف شد",False)
	End If
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

تست کردم ولی اخریش فقط همون لحظه عوض میشد و باز میرفتم بیرون و میومدم داخل درست می شد 

http://s6.picofile.com/file/8250705376/smss.rar.html

 این سورس اگر متوجه نشدید

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

پوزیشن مربوط به کلیک علاقمندی رو به این صورت تغییر بدید...

curnew.Position = btn2.tag

یعنی کدها به این صورت بشه...

Sub Btnlike_Click
	Dim btn2 As Button
	btn2=Sender
	Dim sqlnew As SQL
	Dim curnew As Cursor
	sqlnew.Initialize(File.DirInternal,"smslove.db",True)
	curnew = sqlnew.ExecQuery("SELECT * FROM tbllove where id ="&btn2.Tag)
	curnew.Position = btn2.tag
	
	Dim check As Int
    check = curnew.Getint("fav")    
	If check = 0 Then
	Dim btm As BitmapDrawable
	btm.Initialize(LoadBitmap(File.DirAssets,"heart.png"))
	Btnlike.Background=btm
	sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 1 WHERE id = "&btn2.Tag)
	ToastMessageShow("به علاقه مندی ها اضافه شد",False)		 
	Else
	Dim btm As BitmapDrawable
	btm.Initialize(LoadBitmap(File.DirAssets,"noheart.png"))
	Btnlike.Background=btm
	sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 0 WHERE id = "&btn2.Tag)
	ToastMessageShow("از علاقه مندی ها حذف شد",False)
	End If
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

:DD: نگاه کردید استاد 

اخه میخوام یک سوال دیگ مطرح کنم (در تاپیک جداگانه)

میترسم اسپم بشه

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

دوستان لطفا این پیامم را اسپم محسوب نکنید یه راهی زد به سرم فقط کدشو نمیدونم چی هست

 

میگم ایا کدی وجود داره که تا بتن بوکمارک را زدم دوباره اکتیویتی را لود کنه تا تغییر تصویر انجام بشه؟ :fekr:

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

وری وری ممنون دست شما درد نکنه حل شد 

فقط animation duration را پیدا نکردم اگر مشکلی پیش نمیاد ک هیچ 

اگر هم پیش میاد بگید با کد وارد کنم

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

اگه تست کرده باشید میبینید که حالت انیمیشن دارن برای غیر فعال کردنش هم تو دیزاینر لایوت مربوط به sms رو انتخاب کن و اونجا در بخش activity properties خصوصیتی به اسم animation duration=400 هست اونو به 0 تغییر بده.

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

اشکالی توش نمیبینم 

هر چند توی اکتیویتی پروپرتیس فقط

drawable

color

alpha

title

title color

show title

full screen

بود

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

@@mahdig502,

وقتی به جواب رسیدید پست مورد نظر رو به عنوان بهترین پاسخ تیک بزنید

دیگه بحث رو به حاشیه نکشید لطفاً :53:

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

بایگانی شده

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

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

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