© Khmer Angkor Academy - sophearithput168

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)

  1. 🎨 បន្ថែម ListView ក្នុង layout XML
  2. 📊 បង្កើត data source (Array ឬ ArrayList)
  3. 🌉 បង្កើត Adapter (ArrayAdapter, CustomAdapter)
  4. 🔗 ភ្ជាប់ 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