สร้าง 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: Checkboxandroid.R.layout.simple_list_item_multiple_choice: Multiple Choice
รันทดสอบ
- Run App → แสดง List 6 รายการ
- คลิก 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));