안드로이드(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 |