Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีสร้าง ListView ใน Android

สร้าง ListView แบบง่ายใน Android ด้วย ArrayAdapter

ListView แสดงรายการข้อมูลแนวตั้ง Scroll ได้ คลิกแต่ละ Item ได้

ขั้นตอนที่ 1: Layout XML (activity_main.xml)

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

ขั้นตอนที่ 2: MainActivity.java

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ListView listView = findViewById(R.id.list);
        
        // Data Source
        ArrayList<String> items = new ArrayList<>();
        items.add("JAVA");
        items.add("ANDROID");
        items.add("C Language");
        items.add("CPP Language");
        items.add("Go Language");
        items.add("AVN SYSTEMS");
        
        // Adapter
        ArrayAdapter<String> adapter = new ArrayAdapter<>(
            this,
            android.R.layout.simple_list_item_1,
            items
        );
        
        // Set Adapter
        listView.setAdapter(adapter);
        
        // Item Click Listener
        listView.setOnItemClickListener((parent, view, position, id) -> {
            String clickedItem = (String) parent.getItemAtPosition(position);
            Toast.makeText(this, "Selected: " + clickedItem, Toast.LENGTH_LONG).show();
        });
    }
}

Built-in Layouts สำหรับ ArrayAdapter

  • android.R.layout.simple_list_item_1: TextView เดียว
  • android.R.layout.simple_list_item_2: TextView 2 บรรทัด (Title + Subtitle)
  • android.R.layout.simple_list_item_checked: Checkbox
  • android.R.layout.simple_list_item_multiple_choice: Multiple Choice

รันทดสอบ

  1. Run App → แสดง List 6 รายการ
  2. คลิก Item ใด → Toast แสดงชื่อ Item นั้น

⚠️ หมายเหตุ: ใช้ RecyclerView แทน (Modern)

ListView เป็น Legacy Widget ตั้งแต่ API 1 แนะนำให้ใช้ RecyclerView แทน:

  • Performance ดีกว่า (ViewHolder Pattern บังคับ)
  • LayoutManager ยืดหยุ่น (Linear, Grid, Staggered)
  • Item Animations, Decorations Built-in
  • DiffUtil สำหรับ Efficient Updates

RecyclerView Equivalent (สรุป)

// build.gradle
implementation "androidx.recyclerview:recyclerview:1.3.0"

// Layout
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

// Adapter
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    List<String> items;
    
    static class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        ViewHolder(View v) { super(v); textView = v.findViewById(android.R.id.text1); }
    }
    
    // onCreateViewHolder, onBindViewHolder, getItemCount...
}

// Activity
RecyclerView rv = findViewById(R.id.recyclerView);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(new MyAdapter(items));