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

Cách xóa dữ liệu từ HashMap 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ừ HashMap 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 bao gồm: 2 EditText (tên và số record), 3 nút bấm (Save, Refresh, Delete) và một ListView.

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.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Deque;
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;

public class MainActivity extends AppCompatActivity {

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

    @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");
                }
            }
        });
    }
}

Chạy ứng dụng

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

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

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

Trong hình ảnh đầu tiên, đã chèn 3 bản ghi. Hình thứ hai: nhập record number = 3 và bấm Delete sẽ xóa bản ghi đó khỏi ListView.