Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sử dụng mảng lồng nhau (nested array) trong ListView Android

Xử lý mảng lồng nhau (Nested Array) trong ListView Android

Ví dụ này minh họa cách "làm phẳng" (flatten) một mảng 2 chiều (mảng lồng nhau) thành danh sách 1 chiều để hiển thị trên ListView.

Bước 1: Tạo dự án mới

Android Studio → File → New Project.

Bước 2: Giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_marginTop="30dp"
    tools:context=".MainActivity">

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

</LinearLayout>

Bước 3: Code logic (src/MainActivity.java)

package com.example.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;

public class MainActivity extends AppCompatActivity {

    ListView list;
    // Mảng 2 chiều (nested array)
    String[][] deepArr = new String[][] {{"Sai", "Gopal"}, {"Pallavi", "Priya"}};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        list = findViewById(R.id.list);

        ArrayList<String> arrayList = new ArrayList<>();

        // Duyệt mảng 2 chiều và thêm từng phần tử vào ArrayList
        for (String[] innerArray : deepArr) {
            for (String item : innerArray) {
                arrayList.add(item);
            }
        }

        // Hoặc dùng Java 8 Stream (API 24+):
        // Arrays.stream(deepArr).flatMap(Arrays::stream).collect(Collectors.toList());

        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, arrayList);
        list.setAdapter(adapter);
    }
}

Giải thích

  • deepArr là mảng 2 chiều chứa 2 mảng con: {"Sai", "Gopal"} và {"Pallavi", "Priya"}.
  • Vòng lặp lồng nhau (for-each) duyệt qua từng mảng con và từng phần tử bên trong.
  • Kết quả: ListView hiển thị 4 mục: Sai, Gopal, Pallavi, Priya.

Chạy ứng dụng

Chạy app trên thiết bị. ListView sẽ hiển thị tất cả tên từ mảng lồng nhau theo thứ tự.

Cách sử dụng mảng lồng nhau (nested array) trong ListView Android