سلام خسته نباشید
من برای اولین بار میخوام تو یه پروژه از RecyclerView استفاده کنم
یه مشکلی دارم که احتمالا از درک اشتباه من از ریساکلر هست ولی خب در نوع خودش چند روز دهن مارو سرویس کرده :))
ببینید ما اطلاعات رو به صورت رشته json از سرور دریافت میکنیم و اون هارو توی دیتابیس insert میکنیم
Dim parser As JSONParser
parser.Initialize(job.GetString)
Dim root As Map = parser.NextObject
Dim data As List = root.Get("data")
For o = 0 To data.size - 1
Dim currentMassege() = Regex.Split(",",data.Get(o)) As String
Dim currentMid = currentMassege(0) As Int
Dim currentTitle = currentMassege(1) As String
Main.SQL1.ExecNonQuery("INSERT INTO masseges ('mid','title','isdeleted') VALUES ('"& currentMid &"','"& currentTitle &"','"& 0 &"')")
Next
توی دیتابیس لوکال چند ستون داریم که mid و title و isDeleted هستند و mid ایدی مخصوص هر پیام هست که وقتی روی هر کدوم کلیک شد باید همون id ارسال بشه به سرور تا توضیحات تکمیلی مربوط به اون رو دریافت کنه.
خب وقتی توی دیتابیس ذخیره شد میریم سمت نوشتن کد خود لیست ویو ، من خودم از این کد استفاده کردم
Sub lv_onCreateViewHolder (Parent As Panel, ViewType As Int) '💎 onCreate 💎'
Parent.LoadLayout("formMassegeListItem")
Dim Cursor As Cursor
Cursor = Main.SQL1.ExecQuery("SELECT * FROM masseges WHERE isdeleted = 0")
Cursor.Position = massegeCountRows
Dim label As Label = PanelItem.GetView(2)
label.Text = Cursor.GetString("title")
Log(Cursor.GetInt("mid"))
If massegeCountRows = Cursor.RowCount-1 Then
massegeCountRows = 0
Else
massegeCountRows = massegeCountRows + 1
End If
End Sub
چون فکر میکنم که مقدار ها همیشه ثابت هست گذاشتم تو onCreate ! حالا اگه اینم اشتباه میکنم بهم تذکر بدید
خب این کد به درستی کار میکنه و من همه لیست رو درست دریافت میکنم و کاااااااملا همه چیز خوب و مشتیه ولی مشکل اساسی و اصلی تو رویداد کلیک هست.
وقتی میخوایم یه ایتم از لیست کلیک کنیم باید بریم و mid مربوط به اون پیام رو از دیتابیس بخونیم و بفرستیم به سرور و همزمان دیتابیس update بشه و isDeleted برابر یه مقداری غیر از مقدار دیفالت بشه تا دفعه بعدی دیگه تو لیست نشون داده نشه
دو مشکل داریم :
چطور mid رو از دیتابیس بخونیم ؟
چطور رویداد کلیک رو بنویسیم که قاطی پاتی نشه اطلاعات ! چون اونطور که متوجه شدم ریسایکل میشه لیست و هعی مقدار ها عوض میشه
پیشاپیش از پاسختون ممنونم