Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) ListActivity 를 이용하여 목록페이지 만들기

안드로이드 개발
반응형

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

 

반응형
Posted by 녹두장군1
,