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

Cách xóa dữ liệu từ TreeMap sang ArrayList cho ListView trong Android

Giới thiệu

Ví dụ này minh họa cách xóa dữ liệu từ TreeMap sang ArrayList để hiển thị trên ListView trong Android.

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

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Cấu hình layout (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"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <EditText
        android:id="@+id/record"
        android:layout_width="match_parent"
        android:hint="record number"
        android:inputType="number"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:hint="Enter Name"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/save"
            android:text="Save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/refresh"
            android:text="Refresh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/delete"
            android:text="Delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

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

</LinearLayout>

Giao diện: record number (key), name (value), 3 nút Save/Refresh/Delete, ListView. TreeMap sắp xếp theo key.

Bước 3: Viết code logic (src/MainActivity.java)

package com.example.andy.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;

public class MainActivity extends AppCompatActivity {

    Button save, refresh;
    EditText name, record;
    ArrayAdapter arrayAdapter;
    ArrayList<String> array_list;
    Map map = new TreeMap();
    private ListView listView;

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

        array_list = new ArrayList<>();
        name = findViewById(R.id.name);
        record = findViewById(R.id.record);
        listView = findViewById(R.id.listView);

        findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                arrayAdapter.notifyDataSetChanged();
                listView.invalidateViews();
                listView.refreshDrawableState();
            }
        });

        findViewById(R.id.delete).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!record.getText().toString().isEmpty()) {
                    map.remove(record.getText().toString());
                    array_list.clear();
                    array_list.addAll(map.values());
                    arrayAdapter = new ArrayAdapter(MainActivity.this,
                            android.R.layout.simple_list_item_1, array_list);
                    listView.setAdapter(arrayAdapter);
                    Toast.makeText(MainActivity.this, "Deleted", Toast.LENGTH_LONG).show();
                }
            }
        });

        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!name.getText().toString().isEmpty() && !record.getText().toString().isEmpty()) {
                    map.put(record.getText().toString(), name.getText().toString());
                    array_list.clear();
                    array_list.addAll(map.values());
                    arrayAdapter = new ArrayAdapter(MainActivity.this,
                            android.R.layout.simple_list_item_1, array_list);
                    listView.setAdapter(arrayAdapter);
                    Toast.makeText(MainActivity.this, "Inserted", Toast.LENGTH_LONG).show();
                } else {
                    name.setError("Enter NAME");
                    record.setError("Enter Record");
                }
            }
        });
    }
}

TreeMap: key = record number (String), value = name. Tự sắp xếp key. Xóa bằng key (record number).

Chạy ứng dụng

Kết nối thiết bị, nhấn Run. Nhập record number và tên, bấm Save. Nhập record number, bấm Delete để xóa.

Cách xóa dữ liệu từ TreeMap sang ArrayList cho ListView trong Android Cách xóa dữ liệu từ TreeMap sang ArrayList cho ListView trong Android

Hình 1: Đã chèn 2 bản ghi (sắp xếp theo record number). Hình 2: Nhập record=2, bấm Delete xóa bản ghi đó.