안드로이드 ListView란?
안드로이드에서 ListView는 사용자에게 스크롤 가능한 목록 형태로 정보를 표시하는 UI 요소입니다.
ListView는 많은 항목을 보여주거나 데이터를 표시할 때 사용되며, 사용자가 항목을 선택하거나 상호 작용할 수 있도록 합니다.
ListView는 AdapterView 클래스를 상속하며, 데이터 소스와 연결된 어댑터(Adapter)를 통해 항목을 표시합니다.
ListView를 XML에 추가하는 예제
ListView를 XML 레이아웃 파일에 추가하는 방법은 다음과 같습니다.
먼저, XML 레이아웃 파일에 ListView를 추가한 후, 해당 ListView와 어댑터를 연결해야 합니다.
다음은 ListView를 XML에 추가하고 어댑터와 연결하는 예제 코드입니다.
<!-- activity_main.xml -->
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
// MainActivity.java
ListView listView = findViewById(R.id.listView);
// 어댑터 생성
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
// ListView와 어댑터 연결
listView.setAdapter(adapter);
위의 예제에서 @+id/listView는 ListView의 ID를 지정한 부분입니다.
어댑터로는 ArrayAdapter를 사용하였으며, android.R.layout.simple_list_item_1은 간단한 텍스트 항목을 표시하기 위한 내장 레이아웃 리소스입니다.
data는 ListView에 표시할 데이터를 담고 있는 배열 또는 리스트입니다. 위 예제에서는 data를 생성하지 않았지만 ArrayList<String> 배열로 data 변수를 만들어야합니다.
ListView를 XML에 추가하지 않고 코드에서 추가하는 예제
ListView를 XML에 추가하지 않고 동적으로 코드에서 ListView를 생성하고 설정할 수도 있습니다.
다음은 ListView를 코드에서 생성하고 어댑터와 연결하는 예제 코드입니다:
// MainActivity.java
ListView listView = new ListView(this);
// 어댑터 생성
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
// ListView와 어댑터 연결
listView.setAdapter(adapter);
// 레이아웃에 ListView 추가
LinearLayout layout = findViewById(R.id.layout);
layout.addView(listView);
위의 예제에서는 코드에서 ListView를 생성하고, 이전 예제와 동일한 방식으로 어댑터와 연결합니다.
마지막으로, 생성한 ListView를 레이아웃에 추가해야 합니다.
R.id.layout은 레이아웃의 ID입니다.
필요에 따라 적절한 레이아웃을 선택하여 ListView를 추가할 수 있습니다.
ListView onClick 이벤트 추가 예제
ListView에서 항목을 클릭했을 때 이벤트를 처리하려면 AdapterView.OnItemClickListener 인터페이스를 구현하여 onClick 이벤트를 처리해야 합니다.
다음은 ListView의 onClick 이벤트를 처리하는 예제 코드입니다:
// MainActivity.java
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 클릭한 항목의 데이터 처리
String selectedItem = (String) parent.getItemAtPosition(position);
Toast.makeText(MainActivity.this, selectedItem, Toast.LENGTH_SHORT).show();
}
});
위의 예제에서는 setOnItemClickListener() 메서드를 사용하여 ListView의 onClick 이벤트를 처리합니다.
클릭한 항목의 위치(position)와 해당 항목의 데이터를 처리할 수 있습니다.
예제에서는 클릭한 항목의 데이터를 Toast 메시지로 표시합니다.
간단한 custom ListView 만들기 예제
ListView에 사용자 정의 레이아웃을 적용하여 커스텀 ListView를 만들 수도 있습니다.
이를 위해 ArrayAdapter 대신 BaseAdapter를 상속받은 사용자 정의 어댑터를 구현해야 합니다.
다음은 간단한 커스텀 ListView를 만드는 예제 코드입니다:
// CustomAdapter.java
public class CustomAdapter extends BaseAdapter {
private List<String> data;
private LayoutInflater inflater;
public CustomAdapter(Context context, List<String> data) {
this.data = data;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_item, parent, false);
}
// 데이터 표시 및 처리
String item = data.get(position);
TextView textView = convertView.findViewById(R.id.textView);
textView.setText(item);
return convertView;
}
}
위의 예제에서는 CustomAdapter라는 사용자 정의 어댑터를 구현하였습니다.
getView() 메서드에서 각 항목의 레이아웃을 inflate하여 데이터를 설정합니다.
이때, R.layout.list_item은 각 항목에 대한 사용자 정의 레이아웃 리소스입니다.
이후, MainActivity에서 CustomAdapter를 사용하여 ListView를 설정하면 커스텀 ListView를 만들 수 있습니다.
이와 같이 안드로이드 ListView를 사용하는 다양한 예제를 통해 목록 형태의 정보를 표시하고 상호 작용할 수 있습니다.
ListView는 데이터를 효율적으로 표시하고 처리하기 위한 강력한 도구로 사용됩니다.