|
안드로이드(Android) ListActivity 를 이용하여 목록페이지 만들기 |
|
개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2 |
|
이번예제는 ListActivity 를 이용해서 목록을 만들고, 목록에서 선택한 값을 메인에서 보여주는 기능을 구현 하였습니다. 화면은 두가지로 구성되는데 메인에서 선택버튼을 클릭하게 되면 리스트페이지가 나오고 리스트페이지에서 값을 선택하면 그 값을 받아 메인에서 보여줍니다. |
메인페이지에서는 리스트 페이지에서 보내온 값을
보여주는 것 밖에 없습니다. 아래 함수는 리스트
페이지에서 Intent 로 보낸값을 받는데
setResult 에 RESULT_OK 를 셋팅해서 보내므로
RESULT_OK 일때 TextView 에 넘어온 값을
보여줍니다.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
switch (resultCode) {
case RESULT_OK:
country.setText(data.getStringExtra("country"));
break;
case RESULT_CANCELED:
break;
}
}
}
아래는 메인 페이지의 레이아웃 xml 입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ListView 에서 선택한 데이터 메인에 표시하기" />
<Button
android:id="@+id/selectCountryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="도시선택하기" />
<TextView
android:id="@+id/myCountry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
메인 Activity 의 전체 소스입니다.
리스트에서 받은 데이터를 보여주는 기능을
가지고 있습니다.
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SampleActivity16 extends Activity {
private TextView country;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_activity16);
country = (TextView) findViewById(R.id.myCountry);
Button SelectCountryButton = (Button) findViewById(R.id.selectCountryButton);
SelectCountryButton
.setOnClickListener(countryButtonOnClickListener);
}
private Button.OnClickListener countryButtonOnClickListener
= new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(SampleActivity16.this, AndListActivity.class);
startActivityForResult(intent, 0);
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
switch (resultCode) {
case RESULT_OK:
country.setText(data.getStringExtra("country"));
break;
case RESULT_CANCELED:
break;
}
}
}
}
두번째 리스트 페이지를 알아 보겠습니다.
클래스를 만들 때 ListActivity 를 상속합니다.
레이아웃 xml 은 없으며 배열에 도시명을
만든후 ArrayAdapter 객체에 셋팅하여 리스트를
만듭니다.
static final String[] COUNTRIES = new String[] {
"서울", "부산", "대구", "대전", "천안",
"광주", "안동", "수원", "하동", "김해", "강원도" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, COUNTRIES));
getListView().setTextFilterEnabled(true);
}
이렇게 Activity 가 생성될 때 만든 리스트중
하나를 선택하게 되면 그 값을 메인으로 보내는
기능의 소스입니다. Intent 를 이용해 값을 보내고
있으며 setResult 함수에 RESULT_OK 를 셋팅해
놨으므로 메인에서는 이것을 보고 구분하면 됩니다.
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("country", l.getItemAtPosition(position).toString());
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
}
두번째 Activity 전체 소스는 다음과 같습니다.
리스트를 만들고 선택한 값을 메인으로 보내는
기능을 하고 있습니다.
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class AndListActivity extends ListActivity {
static final String[] COUNTRIES = new String[] {
"서울", "부산", "대구", "대전", "천안",
"광주", "안동", "수원", "하동", "김해", "강원도" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, COUNTRIES));
getListView().setTextFilterEnabled(true);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("country", l.getItemAtPosition(position).toString());
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
}
}
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드(Android) 통지메시지(Notification) 소리를 MP3 로 연결 (0) | 2014.10.31 |
|---|---|
| 안드로이드(Android) Notification is deprecated 통지메시지 변경하기 (0) | 2014.10.31 |
| 안드로이드(Android) 체크박스(checkbox) 체크여부 판단 샘플 예제 (0) | 2014.10.30 |
| 안드로이드(Android) ListActivity 로 구현한 목록에 애니메이션 적용하기 (0) | 2014.10.30 |
| 안드로이드(Android) 레이아웃에 애니메이션 기능을 이용해 시각효과 주기 (0) | 2014.10.29 |
| 안드로이드(Android) AnimationDrawable 이용하여 애니메이션 만들기 (0) | 2014.10.28 |
| 안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기 (0) | 2014.10.28 |
| 안드로이드(Android) 간단한 스레드 사용법과 숫자값 올리기 (0) | 2014.10.27 |
