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

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


fileman

سوال

سلام.

یه سوال داشتم جون من کمکم کنید:*solh*:$*give_rose*

برای ایجاد لیست علاقه مندی برای کتابی که با مولتی پنل ساخته شده ، چطور میشه روی هر آیتمی که کلیک شد، فقط همون آیتم توی دیتابیس ،ستون fav اش از 0 بشه 1؟

کدی که من نوشتم:

sql1.ExecNonQuery("update sec1 set fav = 1 where id ="&cur1.GetInt("id"))

اما مشکلش اینه که هر کدوم رو کلیک کنم همگی ستون fav شون از 0 میشه 1

ممنون میشم جواب بدین.*monkey**wall*

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

  • پاسخ ها 41
  • ایجاد شده
  • آخرین پاسخ

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

سلام امین جان

ممنون بابت راهنماییت

ولی با این کد که اول یه ارور میده:

attachment.php?attachmentid=1788&stc=1

بعد که روی یک آیتم کلیک میکنم بازم همه ی fav ها 1 میشه و میاد توی لیست علاقه مندی!

میشه راهنماییم کنی؟؟

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

من یه module دارم که توش کد های زیر هست:

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.
   Private ScrollView1 As ScrollView
   Private Panel1 As Panel
   Private Label1 As Label
   Dim cur1 As Cursor
   Dim sql1 As SQL
   Dim stop As Int = 3%y
   Private Label2 As Label
   Dim a As send
   Private Button1 As Button
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("scrolLayout")
   If File.Exists(File.DirInternal,"hek-fav.db") = False Then 
   File.Copy(File.DirAssets,"hek-fav.db",File.DirInternal,"hek-fav.db")
   End If
   sql1.Initialize(File.DirInternal,"hek-fav.db",False)
   cur1 = sql1.ExecQuery("select * from sec1")

   For i = 0 To cur1.RowCount-1
   cur1.Position = i
   Dim p As Panel
   p.Initialize("p")
   ScrollView1.Panel.AddView(p,0,stop,100%x,100%y)
   stop = stop + 35%y
   p.LoadLayout("main")
   Label1.TextSize = setting.size
   Label2.TextSize = setting.size
   Label1.Text = cur1.GetString("farsi")
   Label2.text =cur1.GetString("english")
   ScrollView1.Panel.Height = stop
   Next
   Button1.Tag = i
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Panel1_Click
       sql1.ExecNonQuery2("UPDATE sec1 SET fav = 1 WHERE ID = ?",Array As Object(cur1.GetInt("id")))
   ToastMessageShow("به لیست علاقه مندی ها اضافه شد",False)
End Sub
Sub Panel1_LongClick
   Dim cur1 As Cursor
   cur1 =sql1.ExecQuery("select * from sec1")
   sql1.ExecNonQuery("update sec1 set fav = 0 where id = 1")
   ToastMessageShow("از لیست علاقه مندی ها حذف شد.",True)
End Sub

یه module هم دارم که در واقع صفحه علاقه مندی هست که کدهای زیر رو توش نوشتم:

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.
   Dim sql1 As SQL
   Private ListView1 As ListView
   Dim cur1 As Cursor
   Dim s As Int
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("fav1")
   sql1.Initialize(File.DirInternal,"hek-fav.db",False)
   cur1=sql1.ExecQuery("select * from sec1 where fav=1")
   For i=0 To cur1.RowCount-1
   cur1.Position = i
   s = s+1
   ListView1.AddSingleLine2(cur1.GetString("farsi"),i)
   Next
End Sub

موندم الان مشکل از کجاست؟؟؟؟

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

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

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

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

ولی الان موقعی که روی پنل اول کلیک میکنم ، متن پنل آخر صفحه رو توی علاقه ها میزاره !!!! بعد هم روی هر کدوم از پنل ها که کلیک کنم دیگه چیزی اضافه نمیکنه!

حالا چکار کنم؟

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

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

ولی الان موقعی که روی پنل اول کلیک میکنم ، متن پنل آخر صفحه رو توی علاقه ها میزاره !!!! بعد هم روی هر کدوم از پنل ها که کلیک کنم دیگه چیزی اضافه نمیکنه!

حالا چکار کنم؟

از sender استفاده کن دیگه... ببین موقعی که با دستور for پنل هارو اضافه مینکی با هر بار تکرار دستور position میره بالا تا که به آخر برسه و همونجوری میمونه . واسه همین کلیک که میکنی query شما روی آخرین سطر انجام میشه ... شما توی حلقه for به هر پنل یا باتن یا هرچی که استفاده میکنی tag بده بعد با sender تگ رو بگیر تا بفهمی رو کدوم پنل کلیک شده که عمل fav رو روی همون سطر انجام بدی

این یه سورس خیلی ساده ساختم که توش sender هم به کار رفته . ببینش

http://answercenter.ir/thread2360.html#post14742

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

میشه با کد توضیح بدی؟

آخه من تا حالا با tag و sender کار نکردم.

الان توی حلقه for برای tag بنویسم:

panel1.tag مساوی چی باشه؟

برای sender که کلا داغونم!!

اگه یکم توضیح بدی (با کد) ممنون میشم!

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

میشه با کد توضیح بدی؟

آخه من تا حالا با tag و sender کار نکردم.

الان توی حلقه for برای tag بنویسم:

panel1.tag مساوی چی باشه؟

برای sender که کلا داغونم!!

اگه یکم توضیح بدی (با کد) ممنون میشم!

آره توی حلقه for اینو بزار :


panel1.tag=[color=#333333]cur1.GetInt("id")[/color]

بعد توی رویداد کلیک پنل (sub panel_click) اینو بزار


Dim Send As panel
   Send=Sender
sql1.ExecNonQuery2("UPDATE sec1 SET fav = 1 WHERE ID = ?",Array As Object(Send.tag)

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

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

تو فوق العاده ای پسر♥♥

خیلی خیلی ممنون*like**give_rose**give_rose*

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

با سلام

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

 

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


Sub Globals
	Private Panel1 As Panel
	Private Label1 As Label
	Private imgshare As ImageView
	Private imgfav As ImageView
	Dim cur As Cursor
	Dim stop As Int = 3%y
	Private ScrollView1 As ScrollView
		Dim imgf As ImageView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("ScrollView")
	If File.Exists(File.DirInternal,"dbbook.db")= False Then
	File.Copy(File.DirAssets,"dbbook.db",File.DirInternal,"dbbook.db")
	End If
	If SQL1.IsInitialized=False Then
	SQL1.Initialize(File.DirInternal,"dbbook.db",False)
	End If
	cur=SQL1.ExecQuery("SELECT * FROM Tbl1 WHERE Fasl="&1)
	For i = 0 To cur.RowCount-1
	cur.Position=i
	Dim p As Panel
	p.Initialize("p")
	ScrollView1.Panel.AddView(p,0,stop,100%x,100%y)
	stop = stop + 24%y
	p.LoadLayout("Main")
	Label1.Text = cur.GetString("Matn")
	imgfav.Initialize("imgf")
	imgfav.Tag = cur.GetString("Fasl")
	Panel1.tag=cur.GetInt("id")
	ScrollView1.Panel.Height = stop
	Next
End Sub

Sub Activity_Resume

End Sub
Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub imffav_Click
	imgf = Sender
''	ToastMessageShow(imgf.Tag,True)
'	If SQL1.IsInitialized=False Then
'	SQL1.Initialize(File.DirInternal,"dbbook.db",False)
'	End If
'	cur= SQL1.ExecQuery("SELECT * FROM Tbl1")
	SQL1.ExecNonQuery2("UPDATE Tbl1 SET Fav = 1 WHERE ID = ?",Array As Object(imgf.Tag))
	ToastMessageShow("به لیست علاقه مندی اضافه شد",True)
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

ببینید شما برای لیست ویو سفارشیتون ( یا همون مولتی پنل خودمون ) یک لایوت میسازید تا اینجا درست ؟

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

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

دوست من ظاهرا شما این قسمت مشکل دارید :

imffav_Click

باید می نوشتید imgfav  که به اشتباه نوشتید  imffav.

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

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

ببینید دوست عزیز شما اگه imgFav  رو از دیزاینر ادد کردید دیگه نیازی به Initialize  نداره و شما دارید یک EventName  بهش میدید  ----> پس رویداد کلیکتون باید بشه imgf_Click

اینجور که از کد معلومه از طریق دیزاینر ادد کردید چون شما هیچ جا imgfav رو AddView  نکردید پس اون کد اینیشیالیز رو پاک کنید و برید توی دیزاینر روی دکمه راست کلیک و گزینه Generate  رو بزنید و رویداد کلیکشو از اون قسمت ادد کنید.

وگرنه مورد خاصی رو بنده نمی بینم.

 

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

سلام با توجه به توضیحات اقای آرتا میتونید از این کد هم تو رویداد کلیک imgfav تون استفاده کنید امتحان کنید ببینید جواب میگیرید...

 

این کدها رو با کدهای خودتون عوض کنید

 

activitycreate

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("ScrollView")
	If File.Exists(File.DirInternal,"dbbook.db")= False Then
	File.Copy(File.DirAssets,"dbbook.db",File.DirInternal,"dbbook.db")
	End If
	If SQL1.IsInitialized=False Then
	SQL1.Initialize(File.DirInternal,"dbbook.db",False)
	End If
	cur=SQL1.ExecQuery("SELECT * FROM Tbl1 WHERE Fasl="&1)
	For i = 0 To cur.RowCount-1
	cur.Position=i
	Dim p As Panel
	p.Initialize("p")
	ScrollView1.Panel.AddView(p,0,stop,100%x,100%y)
	stop = stop + 24%y
	p.LoadLayout("Main")
	Label1.Text = cur.GetString("Matn")
	imgfav.Tag = cur.Getint("id")
	Panel1.tag=cur.GetInt("id")
	ScrollView1.Panel.Height = stop
	Next
End Sub

کلیک imgfav

Sub imgFav_Click

	Dim imgFav As imageview1
	imgFav = Sender
	
	Dim cursor2 As Cursor
	cursor2 = sql1.ExecQuery("SELECT * FROM Tbl1")
	cursor2.Position = imgFav.Tag
	
	Dim check As Int
	check = cursor2.GetInt("f")
	
	If check = 1 Then
	
    sql1.ExecNonQuery("UPDATE Tbl1 SET f = 0 WHERE id = "&cursor2.GetInt("id"))
    ToastMessageShow("از لیست برگزیده ها حذف شد",False)

	Else
    
    sql1.ExecNonQuery("UPDATE Tbl1 SET f = 1 WHERE id = "&cursor2.GetInt("id"))
    ToastMessageShow("به لیست برگزیده ها اضافه شد",False)
	
	End If
	cursor2.Close
	
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

تشکر دوست عزیز از این خط خطا میگیره

check = cursor2.GetInt("f")
** Activity (main) Create, isFirst = true **


(Main, 28) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (main) Resume **


** Activity (main) Pause, UserClosed = true **


** Activity (menu) Create, isFirst = true **


(Menu, 23) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (menu) Resume **


** Activity (menu) Pause, UserClosed = false **


** Activity (part1) Create, isFirst = true **


(Part1, 23) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (part1) Resume **


java.lang.IllegalArgumentException: column 'f' does not exist


	at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
	at anywheresoftware.b4a.sql.SQL$CursorWrapper.GetInt(SQL.java:337)
	at b4a.example.part1._imgfav_click(part1.java:509)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:187)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:175)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:171)
	at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:77)
	at android.view.View.performClick(View.java:4204)
	at android.view.View$PerformClick.run(View.java:17355)
	at android.os.Handler.handleCallback(Handler.java:725)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:137)
	at android.app.ActivityThread.main(ActivityThread.java:5041)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
	at dalvik.system.NativeStart.main(Native Method)

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

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

اینم لاگ

** Activity (main) Create, isFirst = true **


(Main, 28) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (main) Resume **


** Activity (main) Pause, UserClosed = true **


** Activity (menu) Create, isFirst = true **


(Menu, 23) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (menu) Resume **


** Activity (menu) Pause, UserClosed = false **


** Activity (part1) Create, isFirst = true **


(Part1, 23) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (part1) Resume **


android.database.CursorIndexOutOfBoundsException: Index 6 requested, with a size of 6


	at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
	at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
	at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
	at anywheresoftware.b4a.sql.SQL$CursorWrapper.GetInt(SQL.java:337)
	at b4a.example.part1._imgfav_click(part1.java:509)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:187)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:175)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:171)
	at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:77)
	at android.view.View.performClick(View.java:4204)
	at android.view.View$PerformClick.run(View.java:17355)
	at android.os.Handler.handleCallback(Handler.java:725)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:137)
	at android.app.ActivityThread.main(ActivityThread.java:5041)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
	at dalvik.system.NativeStart.main(Native Method)

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

خب دوست عزیز اسم ستون های دیتابیستون رو جایگزین کنید... :S 

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

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

فکر کنم کدی که تو رویداد کلیک بود رو یعنی اینو

cursor2.Position = imgFav.Tag

باید با این عوض کنید...

cursor2.Position = imgFav.Tag - 1
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

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

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

×
×
  • اضافه کردن...