[Android] ListView를 팝업(AlertDialog)창으로 만들기
- Mobile/Android
- 2017. 10. 25.
안녕하세요 이번에는 리스트뷰를 팝업으로 만드는 방법에 대해서 한번 알아보도록 하겠습니다. 리스트뷰를 팝업창으로 만들어 UI를 구성하시면 좀 더 사용자가 사용하기 편리한 앱을 만들 수 있습니다. 생각보다 굉장히 간단한 방법이니 쉽게 따라 하실 수 있을 것입니다.
ListView를 팝업창으로 만들기
바로 예제 소스 올려드리겠습니다.
먼저 팝업창으로 만들 리스트뷰를 간단하게 만들어주도록 하겠습니다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:id="@+id/textView1"
android:text="TextView"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="center"></TextView>
<ListView
android:layout_height="wrap_content"
android:id="@+id/listView1"
android:layout_width="fill_parent"></ListView>
</LinearLayout>
MainActivity
package com.example.user.popup_listview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.view.View;
//OnItemClickListener 인터페이스 상속
public class MainActivity extends Activity implements OnItemClickListener {
// 리스트뷰에 보여질 문자열 배열로 할당
String[] age = new String[] { "10대", "20대", "30대", "40대", "50대" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 리소스 파일에 정의된 id_list 라는 ID 의 리스트뷰를 얻는다.
ListView list = (ListView) findViewById(R.id.listView1);
// ArrayAdapter 객체를 생성한다.
ArrayAdapter<String> adapter;
// 리스트뷰가 보여질 아이템 리소스와 문자열 정보를 저장한다
// 객체명 = new ArrayAdapter<데이터형>(참조할메소드, 보여질아이템리소스, 보여질문자열);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, age);
/*
*
* 안드로이드에서 제공하는 기본적인 리스트뷰 아이템 리소스
*
* simple_list_item_1
* simple_list_item_2
* simple_list_item_activated_1
* simple_list_item_activated_2
* simple_list_item_checked
* simple_list_item_multiple_choice
* simple_list_item_single_choice
* simple_selectable_list_item
*/
// 리스트뷰에 ArrayAdapter 객체를 설정하여 리스트뷰에 데이터와 출력 형태를 지정한다.
list.setAdapter(adapter);
// 리스트뷰 선택 시 이벤트를 설정한다.
list.setOnItemClickListener(this);
}
// 리스트뷰 선택 시 이벤트 처리 메소드
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// arg1는 현재 리스트에 뿌려지고 있는 정보
// arg2는 현재 리스트에 뿌려지고 있는 해당 id 값
// 값 출력을 위해 불러온 도구를 id값을 통해 불러옴
TextView a = (TextView) findViewById(R.id.textView1);
// 현재 리스트뷰에 있는 해당 값을 보기
TextView tv = (TextView) arg1;
// 현재 리스트뷰에 나오는 문자열과 해당 라인의 id값을 확인
a.setText("선택된 값 : " + tv.getText() + "\n선택된 id값: " + arg2);
}
}
위 코드를 붙여 넣으면 아래와 같이 간단한 리스트뷰가 하나 생성됩니다.
그럼 이제 이렇게 만든 리스트뷰를 팝업창으로 띄우는 방법에 대해서 한번 알아볼게요
AndroidManifest.xml에서 아래 코드를 하나 추가해줍니다.
android:theme="@android:style/Theme.Dialog"
Theme를 Dialog로 만들어주시면 간단하게 팝업 리스트뷰가 완성됩니다.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.user.popup_listview">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@android:style/Theme.Dialog">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
보시는 바와 같이 리스트뷰가 팝업창 형식으로 잘 만들어졌습니다. 다른 팝업창을 띄우시려면 Manifest에서 테마를 바꿔주시면 됩니다.
'Mobile > Android' 카테고리의 다른 글
[Android] 구글 클라우드비전 API키 발급 및 사용법 (48) | 2017.10.27 |
---|---|
[Android] ListView에 EditText넣기 (4) | 2017.10.25 |
[Android] LayoutInflater로 동적으로 레이아웃(뷰) 추가하기 (5) | 2017.10.24 |
[Android] 안드로이드에서 웹뷰로 자신이 만든 웹사이트 띄우기 (2) | 2017.10.19 |