Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android에서 Collections.reverse()로 리스트 값을 역순으로 출력하는 방법

개요

이 예제는 Android에서 Collections.reverse() 메서드를 활용하여 리스트(List)의 값을 역순으로 출력하는 방법을 단계별로 설명합니다.

1단계 — 새 프로젝트 생성

Android Studio에서 File ⇒ New Project로 이동한 후, 필요한 모든 세부 정보를 입력하여 새 프로젝트를 생성합니다.

2단계 — 레이아웃 파일 작성

다음 코드를 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/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" />
   </LinearLayout>
   <ListView
      android:id = "@+id/listView"
      android:layout_width = "match_parent"
      android:layout_height = "wrap_content">
   </ListView>
</LinearLayout>

위 레이아웃에는 이름을 입력받는 EditText, 저장(Save) 버튼과 새로고침(Refresh) 버튼, 그리고 데이터를 표시할 ListView가 배치되어 있습니다. 사용자가 저장 버튼을 클릭하면 입력된 데이터가 ArrayList에 저장되며, 새로고침 버튼을 누르면 ListView의 변경 사항이 화면에 반영됩니다.

3단계 — MainActivity 작성

다음 코드를 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.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
   EditText name;
   ArrayAdapter arrayAdapter;
   ArrayList<String> array_list;
   Set set = new HashSet();
   private ListView listView;
   @Override
   protected void onCreate(Bundle readdInstanceState) {
      super.onCreate(readdInstanceState);
      setContentView(R.layout.activity_main);
      array_list = new ArrayList<String>();
      name = findViewById(R.id.name);
      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.save).setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if (!name.getText().toString().isEmpty()) {
               set.add(name.getText().toString());
               array_list.clear();
               array_list.addAll(set);
               Collections.reverse(array_list);
               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");
            }
         }
      });
   }
}

핵심 로직은 저장 버튼의 클릭 리스너 안에 있습니다. 입력값이 비어 있지 않으면 HashSet에 이름을 추가하고, 이를 ArrayList로 옮긴 뒤 Collections.reverse()를 호출해 리스트 순서를 뒤집습니다. 마지막으로 ArrayAdapter를 통해 ListView에 역순 데이터를 표시하고, 입력값이 비어 있다면 에러 메시지를 표시합니다.

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 열고 툴바의 Run 아이콘을 클릭한 다음, 모바일 기기를 선택하세요. 그러면 기기 화면에 아래와 같은 기본 화면이 표시됩니다.

Android에서 Collections.reverse()로 리스트 값을 역순으로 출력하는 방법

위 실행 결과에서 확인할 수 있듯이, Set에 저장된 이름 요소들이 역순으로 어댑터에 전달되어 ListView에 최신 입력 항목부터 차례대로 나타납니다.