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

لیست علاقه مندی


reza sabouri

سوال

سلام و خسته نباشید . در انجمن هم زیادی سرچ کردم و آقای ایزدی هم آموزش " tag , sender " رو هم دادن  و خیلیا هم در خصوص این مطلب بحث کردن ، من یه layout  دارم که توش یک لیبل ، دو تا ایمیج ویو  دارم که یکی از ایمیج ویو ها همون عکس علاقه مندیه ، که مثلا وقتی روش کلیک میشه بره تو لیست علاقه مندی ها و داخلش پر بشه و وقتی هم دوباره روش میزنیم ، داخلش خالی شه و از لیست علاقه مندی ها حذف بشه . کدهای لیست علاقه مندی رو اینجوری تو رویداد کلیکش  تعریف کردم .

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: False
#End Region

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

Sub Globals
	
Private Label1 As Label
	Private ImageView1 As ImageView
	Private ImageView2 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
	
		ImageView2.Tag=i
	
	If Cur1.GetInt("fav") = 1 Then 
	ImageView2.Bitmap = LoadBitmap(File.DirAssets,"ic_menu_sta2.png")
	Else 		
	ImageView2.Bitmap = LoadBitmap(File.DirAssets,"ic_menu_star.png")
	End If

	Next
	
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub imageview2_Click	
		
	Cur1=sql1.ExecQuery("SELECT * From tbl1")
	Dim img As ImageView
	img=Sender
    Cur1.Position = img.Tag
	
	If Cur1.GetInt("fav") = 1 Then 	
		
	sql1.ExecNonQuery("UPDATE tbl1 SET fav= 0 where id=" &Cur1.GetInt("id"))
	ImageView2.SetBackgroundImage(LoadBitmap(File.DirAssets,"ic_menu_star.png"))
	Msgbox("hazf shod",True)
	
	Else
	sql1.ExecNonQuery("UPDATE tbl1 SET fav= 1 where id=" &Cur1.GetInt("id"))
	ImageView2.SetBackgroundImage(LoadBitmap(File.DirAssets,"ic_menu_sta2.png"))
	Msgbox("ezafe shod",True)
		
	End If
End Sub

الان مشکل اینجاست که مثلا وقتی رو عکس گزینه ی اول میزنم ، عکسش تغییر میکنه و پیام میده که به علاقه مندی ها اضافه شد ، و رو گزینه های دیگه که میزنم ، یک بار پیام میده که حذف شد ، و دوباره که میزنم میگه اضافه شد . و تو لیست ویو هم فقط گزینه ی اولی رو نشون میده ، هرچند که مثلا رو گزینه ی دهم زده باشیم .

:wacko1:

 

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

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

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

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

https://answercenter.ir/topic/13822-مدیریت-کامل-لیست-علاقه-مندی-با-کتابخانه-msh_fave/

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

در 59 دقیقه قبل، محمدرضا شاهپیری گفته است :

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

https://answercenter.ir/topic/13822-مدیریت-کامل-لیست-علاقه-مندی-با-کتابخانه-msh_fave/

جناب شاهپیری خیلی ممنونم ازتون

ولی مثلاله اینجاست فایل ویدیویی آموزشیتون و حتی توی سورس هم وقتی رو آیکون علاقه مندی ها میزنید ، اون پنل به علاقه مندیها اضافه میشه و وقتی هم رو آیکونش داخل علاقه مندیها میزنید ، آیکون صفحه ی اصلی تغییری نمیکنه .

این کدها خیلی پیچیده شدن به نظرم

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

رو کدهای بالا مشخص نمیشه مشکل کدنویسی بنده از کجاست؟

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

اتفاقا ساده ترین راه عرض شد خدمتتون بگذریم

این اشتباهه عزیز

ImageView2.SetBackgroundImage(LoadBitmap(File.DirAssets,"ic_menu_star.png"))

شما باید تغییرات رو روی sender انجام بدین درستش به صورت زیره

img.SetBackgroundImage(LoadBitmap(File.DirAssets,"ic_menu_star.png"))

بقیه جاهاش مشلی نداره ظاهرا

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

والا کلا موندم قاطی کردم

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

یک بار img.tag رو در قسمت activity _creat برابر I  دادم نشد

یک بار کلا حذفش کردم باز نشد

برابر سندر دادم باز نشد

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

تو   activity _creat  واسه چی؟؟

تو همون قسمت کلیک باید انجام بدین

به نظرم علاقه مندی با دیتابیس اصلا جالب نیست

بهترین روش همون map هست که خدمتتون ارائه شد

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

در 20 دقیقه قبل، محمدرضا شاهپیری گفته است :

تو   activity _creat  واسه چی؟؟

تو همون قسمت کلیک باید انجام بدین

به نظرم علاقه مندی با دیتابیس اصلا جالب نیست

بهترین روش همون map هست که خدمتتون ارائه شد

آخه وقتی تو اکتیویتی کریت img.tag=I رو نمیذارم خطا میده کلا .

بازم مرسی خیلی زحمت دادم بهتون . دستتون درد نکنه

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

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

خطاهاشو میگم اصلاح کن

1-شما شمارنده حلقه رو دادین به تگ ایمیج خودتون در صورتی که باید id سطر برگشتی از پایگاه رو بهش میدادین یعنی :

ImageView2.Tag=i

به جاش اینو بزار

ImageView2.Tag=cur.GetInt("id")

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

خب حالا کد sql  زیر رو هم باید هماهنگ کنین.یعنی:

Cur1=sql1.ExecQuery("SELECT * From tbl1")
Cur1.Position = img.Tag

به اینصورت بنویسید

Cur1=sql1.ExecQuery("SELECT * From tbl1 WHERE id="&img.Tag)
Cur1.Position =0

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

Cur1=sql1.ExecQuery("SELECT * From tbl1")

به این صورت

 Cur1 = sql1.ExecQuery("SELECT * FROM tbl1 WHERE onvan='"&splash1.st&"'")

اینو برای این گفتم که دیدم خیلی ها فقط کد رو مینویسند که کار کنه:sorry:

2-مشکل دوم کدتون هم که آقای شاهپیری گفتند.

در 19 ساعت قبل، محمدرضا شاهپیری گفته است :

اتفاقا ساده ترین راه عرض شد خدمتتون بگذریم

این اشتباهه عزیز


ImageView2.SetBackgroundImage(LoadBitmap(File.DirAssets,"ic_menu_star.png"))

شما باید تغییرات رو روی sender انجام بدین درستش به صورت زیره


img.SetBackgroundImage(LoadBitmap(File.DirAssets,"ic_menu_star.png"))

بقیه جاهاش مشلی نداره ظاهرا

همین دیگه!

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

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

در 2 ساعت قبل، amin.mn گفته است :

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

جناب آقای امین واقعا دستتون درد نکنه :53::53:

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

اگه من تو دیتابیسم مثلا ( tbl1,tbl2,tbl3,....)  داشته باشم اونقت باید در فراخانی مطالب در اکتیویتی علاقه مندی چیکار کنم ؟

Sub Process_Globals
	
Dim sql1 As SQL
End Sub

Sub Globals
	

Dim cur1 As Cursor
	Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Do not forget to load the layout file created with the visual designer. For example:
	Activity.LoadLayout("Layoutab1")

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 fav=1")   (((((((''  inja man bayad chejouri begam ke age baghieie "tbl" ha ham , fav=1 boud ro biare va be listview ezafe bokone?))))))))))

For i = 0 To cur1.RowCount-1
	cur1.Position=i
 	ListView1.AddSingleLine(cur1.GetString("onvan"))
	Next
End Sub

 و یک سوال دیگه که آیتم کلیک رو چجوری تعریف کنم که بتونه از بین چندین تیبل ، مطلب خودشو بیاره و نشون بده اگه روش بزنیم:heart:

شرمنده جوگیر شدم دو تا سوال پرسیدم به جای یکی

در 2 ساعت قبل، amin.mn گفته است :

اینو برای این گفتم که دیدم خیلی ها فقط کد رو مینویسند که کار کنه:sorry:

خوشحالم که واقعا میتونم راه های اصولیه ی برنامه نویسی رو هم یاد بگیرم از شما دوستان خوب

باعث افتخاره

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

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

میمونه ارسال اطلاعات توسط  Tag که به این صورت تنظیم می کنیم.

Dim lst As List
lst.Initialize
lst.Add("نام جدول")
lst.Add(cur.GetInt("id"))
ImageView2.Tag=lst

حالا تو متد فراخوانی هم به این شکل:

Dim lst As List=ImageView2.Tag
Dim tbl As String=lst.Get(0)
Dim id As Int=lst.Get(1)

فکر کنم مشکلتون تو این قسمت بود.

البته بقیه اش زیاد فرقی نداره .

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

 

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

در 31 دقیقه قبل، amin.mn گفته است :

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

میمونه ارسال اطلاعات توسط  Tag که به این صورت تنظیم می کنیم.


Dim lst As List
lst.Initialize
lst.Add("نام جدول")
lst.Add(cur.GetInt("id"))
ImageView2.Tag=lst

حالا تو متد فراخوانی هم به این شکل:


Dim lst As List=ImageView2.Tag
Dim tbl As String=lst.Get(0)
Dim id As Int=lst.Get(1)

فکر کنم مشکلتون تو این قسمت بود.

البته بقیه اش زیاد فرقی نداره .

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

 

ببخشید منظور من اینه که من چندین tbl  دارم تو دیتابیسم و هر صفحه ی اکتیویتی هم یکی از اونارو به خودشون اختصاص میدن و مطالب همگی در لیست علاقه مندی فکر کنم قزار بگیرین ، حالا بحث اینجاست که من تو اکتیویتی علاقه مندی ، چجوری بگم که فلان مطلب که از tbl1 هستش که اومده اینجا ، برو بازم اونو بخون و بقیه ی tbl  ها هم همینطور . میشه یه لحظه به کدهای بالا نیگا کنید ، متوجه منظورم میشین

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

سلامی دوباره . اساتید ، من با این روش لیست علاقه مندی رو ساختم و وقتی از داخل علاقه مندی ها مطلب رو باز میکنم و میخوانم و دوباره بر روی آیکون علاقه مندی ها میزنم ، موضوع مورد نظر از لیست علاقه مندی ها حذف نمیشه و باید یک بار از قسمت علاقه مندی ها خارج بشم و دوباره برگردم تا حذف بشه ، در ضمن چجوری میشه لیست علاقه مندی ها رو با تربیت انتخاب کار بر قرار داد ؟

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

بایگانی شده

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

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

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