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는 많은 양의 데이터를 효율적으로 표시하는 뷰입니다. 레이아웃 매니저, 어댑터, 뷰 홀더 패턴을 사용하여 구성됩니다.
- 레이아웃 매니저 설정
RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this));
- 어댑터 설정
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); } } }
- 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가 등장하기 전까지 자주 사용되던 리스트 형식의 뷰입니다.
- 레이아웃 설정
<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/>
- 어댑터 설정
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);
- 아이템 클릭 리스너 설정
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String selectedItem = dataList.get(position); // 아이템 클릭 시 동작 } });
Spinner
- 레이아웃 파일에 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>
- 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
는 사용자가 텍스트를 입력할 때 자동으로 제안 목록을 제공하여 선택할 수 있도록 하는 텍스트 입력 필드입니다.
- 레이아웃 파일에 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>
- 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를 풍부하게 구성할 수 있습니다.
Spinner
와 AutoCompleteTextView
는 각각 사용자가 선택할 수 있는 옵션을 제공하는 데 유용한 UI 구성 요소입니다.
- Spinner: 드롭다운 목록에서 선택할 수 있도록 합니다.
- AutoCompleteTextView: 사용자가 텍스트를 입력할 때 자동으로 제안 목록을 제공하여 선택할 수 있도록 합니다.
이 두 요소를 사용하면 사용자에게 더 나은 선택 경험을 제공할 수 있습니다. 다양한 상황에서 적절히 활용해 보세요.