Android Basic Widgets


6. 기본 위젯 (Basic Widgets)

안드로이드 애플리케이션에서 자주 사용되는 기본 위젯에는 텍스트를 표시하고 편집하는 TextView와 EditText, 버튼을 누르는 Button, 이미지를 표시하는 ImageView와 ImageButton, 그리고 리스트 형식으로 데이터를 표시하는 RecyclerView와 ListView가 있습니다. 이 섹션에서는 이러한 위젯의 사용법과 기본 예제를 소개합니다.

TextView

TextView는 텍스트를 표시하는 기본적인 위젯입니다.

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello, World!"
    android:textSize="20sp"/>
TextView textView = findViewById(R.id.textView);
textView.setText("New Text");
EditText

EditText는 사용자가 텍스트를 입력할 수 있는 입력 필드입니다.

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Enter text"/>
EditText editText = findViewById(R.id.editText);
String inputText = editText.getText().toString();
Button

Button은 사용자가 클릭할 수 있는 버튼을 나타냅니다.

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click Me"/>
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Button 클릭 시 동작
    }
});

ImageView

ImageView는 이미지를 표시하는 위젯입니다.

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/sample_image"/>
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.sample_image);
ImageButton

ImageButton은 이미지가 있는 버튼입니다.

<ImageButton
    android:id="@+id/imageButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/sample_image"/>
ImageButton imageButton = findViewById(R.id.imageButton);
imageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // ImageButton 클릭 시 동작
    }
});

RecyclerView

RecyclerView는 많은 양의 데이터를 효율적으로 표시하는 뷰입니다. 레이아웃 매니저, 어댑터, 뷰 홀더 패턴을 사용하여 구성됩니다.

  1. 레이아웃 매니저 설정
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
  1. 어댑터 설정
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private List<String> dataList;

    public MyAdapter(List<String> dataList) {
        this.dataList = dataList;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        String data = dataList.get(position);
        holder.textView.setText(data);
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView textView;

        public MyViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
        }
    }
}
  1. RecyclerView에 어댑터 설정
List<String> dataList = new ArrayList<>();
dataList.add("Item 1");
dataList.add("Item 2");
dataList.add("Item 3");

MyAdapter adapter = new MyAdapter(dataList);
recyclerView.setAdapter(adapter);
ListView

ListView는 RecyclerView가 등장하기 전까지 자주 사용되던 리스트 형식의 뷰입니다.

  1. 레이아웃 설정
<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
  1. 어댑터 설정
ListView listView = findViewById(R.id.listView);
List<String> dataList = new ArrayList<>();
dataList.add("Item 1");
dataList.add("Item 2");
dataList.add("Item 3");

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);
listView.setAdapter(adapter);
  1. 아이템 클릭 리스너 설정
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String selectedItem = dataList.get(position);
        // 아이템 클릭 시 동작
    }
});

Spinner

  1. 레이아웃 파일에 Spinner 추가
   <!-- res/layout/activity_main.xml -->
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical"
       android:padding="16dp">

       <Spinner
           android:id="@+id/spinner"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"/>

   </LinearLayout>
  1. ArrayAdapter를 사용하여 데이터 설정
   // MainActivity.java
   import android.os.Bundle;
   import android.view.View;
   import android.widget.AdapterView;
   import android.widget.ArrayAdapter;
   import android.widget.Spinner;
   import android.widget.Toast;
   import androidx.appcompat.app.AppCompatActivity;

   public class MainActivity extends AppCompatActivity {

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

           Spinner spinner = findViewById(R.id.spinner);

           // 스피너에 표시할 데이터 배열
           String[] items = new String[]{"Option 1", "Option 2", "Option 3"};

           // ArrayAdapter 생성
           ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);

           // 어댑터를 스피너에 설정
           spinner.setAdapter(adapter);

           // 스피너 아이템 선택 리스너 설정
           spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
               @Override
               public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                   String selectedItem = parent.getItemAtPosition(position).toString();
                   Toast.makeText(MainActivity.this, "Selected: " + selectedItem, Toast.LENGTH_SHORT).show();
               }

               @Override
               public void onNothingSelected(AdapterView<?> parent) {
                   // 선택된 항목이 없을 때 처리
               }
           });
       }
   }

AutoCompleteTextView

AutoCompleteTextView는 사용자가 텍스트를 입력할 때 자동으로 제안 목록을 제공하여 선택할 수 있도록 하는 텍스트 입력 필드입니다.

  1. 레이아웃 파일에 AutoCompleteTextView 추가
   <!-- res/layout/activity_main.xml -->
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical"
       android:padding="16dp">

       <AutoCompleteTextView
           android:id="@+id/autoCompleteTextView"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="Start typing..."/>

   </LinearLayout>
  1. ArrayAdapter를 사용하여 데이터 설정
   // MainActivity.java
   import android.os.Bundle;
   import android.widget.ArrayAdapter;
   import android.widget.AutoCompleteTextView;
   import androidx.appcompat.app.AppCompatActivity;

   public class MainActivity extends AppCompatActivity {

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

           AutoCompleteTextView autoCompleteTextView = findViewById(R.id.autoCompleteTextView);

           // 자동 완성에 사용할 데이터 배열
           String[] items = new String[]{"Apple", "Banana", "Cherry", "Date", "Fig", "Grape", "Honeydew"};

           // ArrayAdapter 생성
           ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, items);

           // 어댑터를 AutoCompleteTextView에 설정
           autoCompleteTextView.setAdapter(adapter);
       }
   }

정리

안드로이드에서 기본 위젯들은 UI를 구성하는 데 필수적인 요소입니다. TextView, EditText, Button은 가장 기본적인 입력 및 출력 위젯이며, ImageView와 ImageButton은 이미지 표시 및 클릭 가능한 이미지를 제공합니다. RecyclerView와 ListView는 리스트 형식으로 데이터를 효율적으로 표시하는 데 사용됩니다. 이러한 위젯을 사용하면 안드로이드 애플리케이션의 UI를 풍부하게 구성할 수 있습니다.

SpinnerAutoCompleteTextView는 각각 사용자가 선택할 수 있는 옵션을 제공하는 데 유용한 UI 구성 요소입니다.

  • Spinner: 드롭다운 목록에서 선택할 수 있도록 합니다.
  • AutoCompleteTextView: 사용자가 텍스트를 입력할 때 자동으로 제안 목록을 제공하여 선택할 수 있도록 합니다.

이 두 요소를 사용하면 사용자에게 더 나은 선택 경험을 제공할 수 있습니다. 다양한 상황에서 적절히 활용해 보세요.


Leave a Reply

Your email address will not be published. Required fields are marked *