For developer/Android
(Android)my26_listview,리스트뷰
프린이0218
2020. 6. 1. 18:50
리스트란? 일반적으로 여러 개의 아이템 중 하나를 선택할 수 있는 세로 모양으로 된 화면 컨트롤을 말한다.
위젯은 선택 위젯과 일반 위젯으로 나눌 수 있는데 그 차이는 어뎁터 패턴을 사용하는 것을 선택 위젯이라고 한다. 선택 위젯에 데이터를 넣을 때 위젯이 아닌 어뎁터에 설정 해야 한다. 화면에 보이는 뷰도 어뎁터에서 만든다.
대표적인 선택 위젯은 리스트 뷰 이다.
※어댑터 : 보여지는 View와 그 View에 올릴 Data를 연결하는 다리 역할을 한다.
ArrayAdapter란?
ArrayAdapter는 배열과 어댑터 뷰를 연결하는 클래스입니다. 여기서 배열은 어댑터 뷰가 화면으로 보여줄 자료들의 집합
선택 위젯이란? 여러 개의 아이템 중에 하나를 선택할 수 있는 리스트 모양의 위젯

①Arraylis인 list에 데이터들을 추가한다.
ArrayList<String> list = new ArrayList<>();
list.add("바나나");
list.add("딸기");
list.add("수박");
list.add("사과");
list.add("오렌지");
list.add("망고");
list.add("키위");
list.add("포도");
list.add("멜론");
list.add("두리안");
list.add("바나나");
②ArrayAdapter 객체를 생성하여 기본 sdk에 내장된 android.R.layout.simple_list_item_1에 list를 넣어야 한다.
데이터를 전달 받은 adapter를 listview에 보내고 listView에 있는 아이템을 클릭시 발생되는 이벤트를 설정해 준다.
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*
parnet->mainactivity
position -> list 인덱스
*/
String selected_item = (String) parent.getItemAtPosition(position);
textView.setText(selected_item);
// adapter.getPosition()
}
});
-전체 코드-
더보기
-Mainactivity.java-
package com.example.my26_listview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
TextView textView;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
listView = findViewById(R.id.listView);
ArrayList<String> list = new ArrayList<>();
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*
parnet->mainactivity
position -> list 인덱스
*/
String selected_item = (String) parent.getItemAtPosition(position);
textView.setText(selected_item);
// adapter.getPosition()
}
});
list.add("바나나");
list.add("딸기");
list.add("수박");
list.add("사과");
list.add("오렌지");
list.add("망고");
list.add("키위");
list.add("포도");
list.add("멜론");
list.add("두리안");
list.add("바나나");
}
}
-activity_main.xml-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:text="아래목록에서 선택하세요"
android:gravity="center"/>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:listSelector="@android:color/holo_green_light"/>
<!-- 눌렷을 때 색 변경 -->
</LinearLayout>