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

آخرین مشاهده


Mthzf1384

سوال

سلام

من یک برنامه کتاب درست کردم برنامه‌ی من از چندین فصل و گفتار و... تشکیل شده و همچنین هر بخش از آن از چندین نکته تشکیل شده و هر نکته در یک پنل جداگانه هست(با استفاده از کاستوم لیست ویو)حالا داخل برنامم یک قسمت گذاشتم با عنوان آخرین مشاهده می‌خوام با زدن این دکمه برنامه کاربر رو به همون پنل و نکته ‌ای ببره که آخرین بار در حال مطالعه‌ی آن بوده ببره

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

با تشکر از تیم answer center

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

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

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

در 3 ساعت قبل، Mthzf1384 گفته است :

سلام

من یک برنامه کتاب درست کردم برنامه‌ی من از چندین فصل و گفتار و... تشکیل شده و همچنین هر بخش از آن از چندین نکته تشکیل شده و هر نکته در یک پنل جداگانه هست(با استفاده از کاستوم لیست ویو)حالا داخل برنامم یک قسمت گذاشتم با عنوان آخرین مشاهده می‌خوام با زدن این دکمه برنامه کاربر رو به همون پنل و نکته ‌ای ببره که آخرین بار در حال مطالعه‌ی آن بوده ببره

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

با تشکر از تیم answer center

درود ، 

قطعاً آخرین نکته ای که به نمایش گذاشته میشه داخل یک اکتیویتی هستش 

شما کافیه در ساب Activity_Pause ( شناسایی ترک کردن اکتیویتی توسط کاربر )  آیدی مورد نظر اون مطلب رو در فضایی موقتی ( فایل و یا .... ) ذخیره کنید 

سپس در کد باتنی که تعریف کردید اون اکتیوتی رو استارت کنید توسط اطلاعاتی که در اون فایل ذخیره شده.

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

در در 24 آبان 1398 در 07:53، محمد رشوند گفته است :

درود ، 

قطعاً آخرین نکته ای که به نمایش گذاشته میشه داخل یک اکتیویتی هستش 

شما کافیه در ساب Activity_Pause ( شناسایی ترک کردن اکتیویتی توسط کاربر )  آیدی مورد نظر اون مطلب رو در فضایی موقتی ( فایل و یا .... ) ذخیره کنید 

سپس در کد باتنی که تعریف کردید اون اکتیوتی رو استارت کنید توسط اطلاعاتی که در اون فایل ذخیره شده.

سلام

خیلی ممنون از پاسختون ولی مثلا یک گفتار که از 40 نکته تشکیل شده باشه نکته ها به صورت پشت سر هم قرار دارند مانند برنامه ی حبل المتین که تمام آیات پشت سر هم هستند یا برنامه باب النعیم یا برنامه مبین خوب اون وقت چطور آیدی یکی از این 40 تا رو ذخیره کنم

با تشکر

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

در 8 ساعت قبل، Mthzf1384 گفته است :

آیدی یکی از این 40 تا رو ذخیره کنم

درود @ Mthzf1384  عزیز ،

مطلع نیستم که نکته ها رو چگونه و با چه روشی به نمایش میگذارید اما اینطور که پیداست در اسکرول ویو یا لیست ویو به نمایش گذاشتید

کافیه مقدار پوزیشین و موقعیت اون نکته در لیست ویو و یا اسکرول ویو را ذخیره کنید

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

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

موفق باشید. 

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

در 15 ساعت قبل، محمد رشوند گفته است :

درود @ Mthzf1384  عزیز ،

مطلع نیستم که نکته ها رو چگونه و با چه روشی به نمایش میگذارید اما اینطور که پیداست در اسکرول ویو یا لیست ویو به نمایش گذاشتید

کافیه مقدار پوزیشین و موقعیت اون نکته در لیست ویو و یا اسکرول ویو را ذخیره کنید

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

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

موفق باشید. 

Sub Activity_Create(FirstTime As Boolean)
	Main.e = 0
	Activity.RemoveAllViews
	Activity.LoadLayout("Lfehrest")
	lv.Initialize(Me , "lv")
	If(Activity.Height > Activity.Width)Then
		Activity.AddView(lv.AsView , 3%X , 34%Y , 94%X , 64%Y)
	Else
		Activity.AddView(lv.AsView , 6%X , 55%Y , 87%X , 43%Y)
	End If	
	sql1.Initialize(File.DirInternal , "book.db" , True)
	Dim cur2 As Cursor
	cur2 = sql1.ExecQuery("SELECT * FROM TblSetting")
	cur2.Position = 0
	b = cur2.GetString("ColorPnl1")
	f = cur2.GetString("ColorPnl2")
	Dim cur1 As Cursor
	cur1 = sql1.ExecQuery("SELECT * FROM TblAkharin")
	Dim cur As Cursor
	For i = 0 To cur1.RowCount - 1
		cur1.Position = i
		cur = sql1.ExecQuery2("SELECT * FROM TblText WHERE IDzFasl = ? AND IDzGoftar = ? AND IDzBakhsh = ?" , Array As String(cur1.GetString("IDzFasl") , cur1.GetString("IDzGoftar") , cur1.GetString("IDzBakhsh")))
	Next
	Dim p1  As Panel
	For j = 0 To cur.RowCount - 1
		cur.Position = j
		sql1.ExecNonQuery2("UPDATE TblText SET ColorPnl1 = ?" , Array As String(b))
		sql1.ExecNonQuery2("UPDATE TblText SET ColorPnl2 = ?" , Array As String(f))
		p1.Initialize("")
		Lbltampel.Text = cur.GetString("Text")
		Lbltampel.Height = su.MeasureMultilineTextHeight(Lbltampel , Lbltampel.Text)
		Lbltampel2.Text = cur.GetString("Titr")
		Lbltampel2.Height = su.MeasureMultilineTextHeight(Lbltampel2 , Lbltampel2.Text)
		If(cur.GetString("Titr") <> "")Then
			lv.Add(p1 , Lbltampel2.Height + Lbltampel.Height +30dip + 180dip , "")
			p1.RemoveAllViews
			p1.LoadLayout("l")
			Lblpyamaktext.Text = cur.GetString("Text")
			Lbltitr.Text = cur.GetString("Titr")
			checedcolor
			checedfont
			Dim cur5 As Cursor
			cur5 = sql1.ExecQuery("SELECT * FROM TblSetting")
			cur5.Position = 0
			Lblpyamaktext.TextSize = cur5.GetString("SizeText")
			Lbltitr.TextSize = cur5.GetString("SizeTitr")
			Lblpyamaktext.Height = su.MeasureMultilineTextHeight(Lblpyamaktext , Lblpyamaktext.Text)
			Lbltitr.Height = su.MeasureMultilineTextHeight(Lbltitr , Lbltitr.Text)
			Pnlpyamak.Height = Lbltampel2.Height + Lbltampel.Height +20dip + 180dip
			Lblpyamaktext.Top = Lbltitr.Top + Lbltitr.Height + 10dip
			BtnCopyFehrest.Top = Pnlpyamak.Height - BtnCopyFehrest.Height - 5dip
			Btnshare.Top = BtnCopyFehrest.Top
			ImageViewFav.Top = BtnCopyFehrest.Top
			Btnreturn.Top = BtnCopyFehrest.Top
			Imggozaresh.Top = BtnCopyFehrest.Top
			If Lblpyamaktext.Height + Lbltitr.Height + BtnCopyFehrest.Height + 20dip > Pnlpyamak.Height Then
				Lblpyamaktext.TextSize = 20
			End If
		Else
			lv.Add(p1 , su.MeasureMultilineTextHeight(Lbltampel , Lbltampel.Text) +10dip + 180dip , "")
			p1.RemoveAllViews
			p1.LoadLayout("l")
			Lblpyamaktext.Text = cur.GetString("Text")
			checedcolor
			checedfont
			Dim cur5 As Cursor
			cur5 = sql1.ExecQuery("SELECT * FROM TblSetting")
			cur5.Position = 0
			Lblpyamaktext.TextSize = cur5.GetString("SizeText")
			Lblpyamaktext.Height = su.MeasureMultilineTextHeight(Lblpyamaktext , Lblpyamaktext.Text)
			Pnlpyamak.Height = Lbltampel.Height +10dip + 180dip
			Lblpyamaktext.Top = Lbltitr.Top
			BtnCopyFehrest.Top = Pnlpyamak.Height - BtnCopyFehrest.Height - 5dip
			Btnshare.Top = BtnCopyFehrest.Top
			ImageViewFav.Top = BtnCopyFehrest.Top
			Btnreturn.Top = BtnCopyFehrest.Top
			Imggozaresh.Top = BtnCopyFehrest.Top
			If Lblpyamaktext.Height + Lbltitr.Height + BtnCopyFehrest.Height + 20dip > Pnlpyamak.Height Then
				Lblpyamaktext.TextSize = 20
			End If
		End If			
		Btnshare.SetBackgroundImage(LoadBitmap(File.DirAssets , "share.png"))
		BtnCopyFehrest.Tag = Lblpyamaktext.Text
		Btnshare.Tag = Lblpyamaktext.Text
		ImageViewFav.Tag = cur.GetString("ID")
		Imggozaresh.Tag = cur.GetString("ID")
		Btnreturn.Tag = cur.GetString("ID")
		Select cur.GetString("Color")
			Case 10
				checedcolor1
			Case 11
				checedcolor2
		End Select
		If cur.GetString("Favorite") = 0 Then
			ImageViewFav.SetBackgroundImage(LoadBitmapSample(File.DirAssets , "Like.png" , ImageViewFav.Width , ImageViewFav.Height))
		Else
			ImageViewFav.SetBackgroundImage(LoadBitmapSample(File.DirAssets , "Like1.png" , ImageViewFav.Width , ImageViewFav.Height))
		End If
		If cur.GetString("Return") = 0 Then
			Btnreturn.SetBackgroundImage(LoadBitmapSample(File.DirAssets , "return ried1.png" , Btnreturn.Width , Btnreturn.Height))
		Else
			Btnreturn.SetBackgroundImage(LoadBitmapSample(File.DirAssets , "return ried.png" , Btnreturn.Width , Btnreturn.Height))
		End If
	Next
	ImgTitle.SetBackgroundImage(LoadBitmapSample(File.DirAssets , cur.GetString("Ax") , ImgTitle.Width , ImgTitle.Height))
	If(Main.s = 4)Then
		Main.e = 7
	End If
End Sub
#Event: ItemClick (Index As Int, Value As Object)
Sub Class_Globals
	Private sv As ScrollView
	Private items As List
	Private panels As List
	Private dividerHeight As Float
	Private pressedDrawable As Object
	Private EventName As String
	Private CallBack As Object
	Private su As StringUtils
	Public DefaultTextSize As Int
	Public DefaultTextColor As Int
	Public DefaultTextBackgroundColor As Int
	Private DefaultTextBackground As Object
End Sub
Public Sub Initialize (vCallback As Object, vEventName As String)
	sv.Initialize2(0, "sv")
	items.Initialize
	panels.Initialize
	dividerHeight = 2dip
	EventName = vEventName
	CallBack = vCallback
	sv.Color = 0xFFD9D7DE 'this sets the dividers color
	Dim r As Reflector
	Dim idPressed As Int
   	idPressed = r.GetStaticField("android.R$drawable", "list_selector_background")
    r.Target = r.GetContext
    r.Target = r.RunMethod("getResources")
	pressedDrawable = r.RunMethod2("getDrawable", idPressed, "java.lang.int")
	DefaultTextColor = Colors.White
	DefaultTextSize = 16
	DefaultTextBackgroundColor = Colors.Black
	DefaultTextBackground = Null
End Sub
Public Sub AsView As View
	Return sv
End Sub
Public Sub DesignerCreateView(base As Panel, lbl As Label, props As Map)
	Dim parent As Panel
	Dim r As Reflector
	r.Target = base
	parent = r.RunMethod("getParent")
	base.RemoveView 
	parent.AddView(sv, base.Left, base.Top, base.Width, base.Height)
	DefaultTextSize = lbl.TextSize
	DefaultTextColor = lbl.TextColor
	DefaultTextBackground = base.Background
End Sub
Public Sub Clear
	items.Clear
	panels.Clear
	sv.Panel.Height = 0
	For i = sv.Panel.NumberOfViews - 1 To 0 Step -1
		sv.Panel.RemoveViewAt(i)
	Next
End Sub
Public Sub GetSize As Int
	Return items.Size
End Sub
Public Sub GetPanel(Index As Int) As Panel
	Dim p As Panel
	p = panels.Get(Index)
	Return p.GetView(0)
End Sub
Public Sub GetValue(Index As Int) As Object
	Return items.Get(Index)
End Sub
Public Sub RemoveAt(Index As Int)
	Dim removePanel, p As Panel
	removePanel = panels.Get(Index)
	For i = Index + 1 To items.Size - 1
		p = panels.Get(i)
		p.Tag = i - 1
		p.Top = p.Top - removePanel.Height - dividerHeight
	Next
	sv.Panel.Height = sv.Panel.Height - removePanel.Height - dividerHeight
	items.RemoveAt(Index)
	panels.RemoveAt(Index)
	removePanel.RemoveView
End Sub
Public Sub AddTextItem(Text As String, Value As Object)
	InsertAtTextItem(items.Size, Text, Value)
End Sub
Public Sub InsertAtTextItem(Index As Int, Text As String, Value As Object)
	Dim pnl As Panel
	pnl.Initialize("")
	Dim lbl As Label
	lbl.Initialize("")
	lbl.Gravity = Bit.Or(Gravity.CENTER_VERTICAL, Gravity.LEFT)
	pnl.AddView(lbl, 5dip, 2dip, sv.Width - 5dip, 20dip)
	lbl.Text = Text
	lbl.TextSize = DefaultTextSize
	lbl.TextColor = DefaultTextColor
	If DefaultTextBackground <> Null Then
		pnl.Background = DefaultTextBackground
	Else
		pnl.Color = DefaultTextBackgroundColor
	End If
	Dim minHeight As Int
	minHeight = su.MeasureMultilineTextHeight(lbl, Text)
	lbl.Height = Max(50dip, minHeight)
	InsertAt(Index, pnl, lbl.Height + 2dip, Value)
End Sub
Public Sub InsertAt(Index As Int, Pnl As Panel, ItemHeight As Int, Value As Object)
	Dim sd As StateListDrawable
    sd.Initialize
    sd.AddState(sd.State_Pressed, pressedDrawable)
    sd.AddCatchAllState(Pnl.Background)
	Dim p As Panel
	p.Initialize("panel")
	p.Background = sd
	Dim cd As ColorDrawable
	cd.Initialize(Colors.Transparent, 0)
    Pnl.Background = cd
	p.AddView(Pnl, 0, 0, sv.Width, ItemHeight)
	p.Tag = Index
	If Index = items.Size Then
		items.Add(Value)
		panels.Add(p)
		Dim top As Int
		If Index = 0 Then top = dividerHeight Else top = sv.Panel.Height
		sv.Panel.AddView(p, 0, top, sv.Width, ItemHeight)
	Else
		Dim top As Int
		If Index = 0 Then
			top = dividerHeight
		Else
			Dim previousPanel As Panel
			previousPanel = panels.Get(Index - 1)
			top = previousPanel.top + previousPanel.Height + dividerHeight
		End If
		Dim p2 As Panel
		For i = Index To panels.Size - 1
			p2 = panels.Get(i)
			p2.top = p2.top + ItemHeight + dividerHeight
			p2.Tag = i + 1
		Next
		items.InsertAt(Index, Value)
		panels.InsertAt(Index, p)
		sv.Panel.AddView(p, 0, top, sv.Width, ItemHeight)
	End If
	sv.Panel.Height = sv.Panel.Height + ItemHeight + dividerHeight
	If items.Size = 1 Then sv.Panel.Height = sv.Panel.Height + dividerHeight
End Sub
Public Sub Add(Pnl As Panel, ItemHeight As Int, Value As Object)
	InsertAt(items.Size, Pnl, ItemHeight, Value)
End Sub
Public Sub JumpToItem(Index As Int)
	Dim top As Int
	Dim p As Panel
	For i = 0 To Min(Index - 1, items.Size - 1)
		p = panels.Get(i)
		top = top + p.Height + dividerHeight
	Next
	sv.ScrollPosition = top
	Sleep(0)
	sv.ScrollPosition = top
	Sleep(0)
End Sub
Private Sub Panel_Click
	If SubExists(CallBack, EventName & "_ItemClick") Then
		Dim v As View
		v = Sender
		CallSub3(CallBack, EventName & "_ItemClick", v.Tag, items.Get(v.Tag))
	End If
End Sub
Public Sub GetItemFromView(v As View) As Int
	Dim r As Reflector
	Dim parent, current As Object
	parent = v
	Do While (parent Is Panel) = False Or sv.Panel <> parent
		current = parent
		r.Target = current
		parent = r.RunMethod("getParent")
	Loop
	v = current
	Return v.Tag
End Sub

سلام

من از این اکتیویتی به عنوان exist madoule استفاده کردم و بعد داخل اکتیویتی کریت ازش استفاده کردم

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

بایگانی شده

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

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

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