ListView
ListView
ListView ប្រើសម្រាប់បង្ហាញ scrollable list នៃ items។ វាជា predecessor របស់ RecyclerView ហើយនៅតែប្រើក្នុង apps ចាស់ៗ។
🎯 ListView Architecture
┌─────────────────────────────────┐ │ ListView │ ──► UI Container └────────────┬────────────────────┘ │ ┌────────────▼────────────────────┐ │ Adapter │ ──► Bridge Pattern │ (ArrayAdapter/BaseAdapter) │ └────────────┬────────────────────┘ │ ┌────────────▼────────────────────┐ │ Data Source │ ──► Array, ArrayList, Database │ [Item 1, Item 2, Item 3...] │ └─────────────────────────────────┘
🔄 របៀបប្រើ ListView (4 Steps)
- 🎨 បន្ថែម ListView ក្នុង layout XML
- 📊 បង្កើត data source (Array ឬ ArrayList)
- 🌉 បង្កើត Adapter (ArrayAdapter, CustomAdapter)
- 🔗 ភ្ជាប់ Adapter ទៅ ListView
🎨 Adapter Types
Adapter | ពិពណ៌នា | ពេលណាប្រើ |
---|---|---|
ArrayAdapter | Built-in adapter សម្រាប់ simple data | String array, simple lists |
BaseAdapter | Custom adapter (more flexible) | Custom layouts, complex data |
CursorAdapter | For database cursors | SQLite database results |
⚡ ViewHolder Pattern (Performance)
ViewHolder pattern កាត់បន្ថយ findViewById()
calls ដើម្បី improve performance:
Without ViewHolder | With ViewHolder |
---|---|
❌ findViewById() every time | ✅ findViewById() once, reuse |
🐢 Slow scrolling (100ms+) | ⚡ Fast scrolling (10ms) |
📊 1000 items = 1000 calls | 📊 1000 items = ~15 calls |
🆚 ListView vs RecyclerView
Feature | ListView | RecyclerView |
---|---|---|
ViewHolder | Optional (manual) | ✅ Required (automatic) |
LayoutManager | Vertical only | ✅ Vertical, Horizontal, Grid, Staggered |
Animations | Limited | ✅ Built-in animations |
Performance | Good (with ViewHolder) | ✅ Excellent (optimized) |
Usage | Legacy apps | ✅ Modern apps (recommended) |
⚠️ Recommendation: ប្រើ RecyclerView សម្រាប់ new projects! ListView គឺសម្រាប់ legacy code តែប៉ុណ្ណោះ។
👆 ListView Events
Listener | Event | Parameters |
---|---|---|
OnItemClickListener |
Item clicked | parent, view, position, id |
OnItemLongClickListener |
Item long clicked | parent, view, position, id |
OnItemSelectedListener |
Item selected (keyboard) | parent, view, position, id |
Java Code
Click "Run" to execute the Java code