| Name | Message | Date |
|---|---|---|
| 📄 FolderListAdapter.cs | 4 days ago | |
| 📄 NoteListAdapter.cs | 3 days ago |
📄
src/Adapters/NoteListAdapter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using Android.Views; using AndroidX.RecyclerView.Widget; using NotesApp.Models; namespace NotesApp.Adapters; public class NoteListAdapter(Action<NoteCacheEntry> onNoteTapped) : RecyclerView.Adapter { private List<NoteCacheEntry> _items = []; public override int ItemCount => _items.Count; public void SetItems(List<NoteCacheEntry> items) { _items = items; NotifyDataSetChanged(); } public NoteCacheEntry GetItem(int position) => _items[position]; public void RemoveAt(int position) { _items.RemoveAt(position); NotifyItemRemoved(position); } public void UpdateItem(string noteId, string preview) { var index = _items.FindIndex(e => e.Id == noteId); if (index < 0) return; _items[index] = _items[index] with { Preview = preview }; NotifyItemChanged(index); } public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) { var view = LayoutInflater .From(parent.Context)! .Inflate(Resource.Layout.row_note, parent, false)!; return new NoteViewHolder(view, onNoteTapped); } public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position) => ((NoteViewHolder)holder).Bind(_items[position]); private class NoteViewHolder : RecyclerView.ViewHolder { private readonly TextView _nameView; private readonly TextView _previewView; private readonly Action<NoteCacheEntry> _onNoteTapped; private NoteCacheEntry? _item; public NoteViewHolder(View itemView, Action<NoteCacheEntry> onNoteTapped) : base(itemView) { _nameView = itemView.FindViewById<TextView>(Resource.Id.note_name)!; _previewView = itemView.FindViewById<TextView>(Resource.Id.note_preview)!; _onNoteTapped = onNoteTapped; itemView.Click += (_, _) => { if (_item != null) _onNoteTapped(_item); }; } public void Bind(NoteCacheEntry entry) { _item = entry; _nameView.Text = entry.Name; _previewView.Text = entry.Preview; } } }