Android 입문자를 위한 Tutorial - 5. ArrayList

Mobile Programming/Android 2010. 11. 4. 14:14

arrayList를 확장하여 이용하는 뷰가 참 많이 있다.

먼저 가장 많이 사용하는 "리스트뷰", 말 그대로 여러정보를 리스트를 뿌려주듯이 뿌려줄 수 있다.

adapter를 이용하기 위해서 먼저 ArrayList를 만들고 ,

ArrayList Items;
ArrayAdapter Adapter;
ListView list;

	Items = new ArrayList();
	Items.add("First");
	Items.add("Second");
	Items.add("Third");



Array Adapter를 만들어줘야한다.
Adapter = new ArrayAdapter(this, android.R.layout.
				simple_list_item_multiple_choice, Items);

그 뒤에 listview에 연결시켜주면 된다.
list.setAdapter(Adapter);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
.


다음으로 스피너는
팝업창을 통해서 리스트 뷰를 띄워주는 형태라고 생각하면 될 것 같다.

다음은 스피너를 이용하는 소스이다.
package geng.mm.jnu;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RatingBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class fruitrating extends Activity {
    /** Called when the activity is first created. */
		ArrayAdapter adspin;
		RatingBar mRating;
		TextView mRateText;
		String fruit;
		float rate;
		//채워넣을 곳//
		public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fruitrating);

		mRating = (RatingBar)findViewById(R.id.ratingbar);
		mRateText = (TextView)findViewById(R.id.ratetext);

		Spinner spin = (Spinner)findViewById(R.id.myspinner);
		spin.setPrompt("과일을 고르세요.");

		adspin = ArrayAdapter.createFromResource(this, R.array.fruits, 
		android.R.layout.simple_spinner_item);
		adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spin.setAdapter(adspin);

		spin.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView parent, View view, int position, long id) {
				//채워넣을 곳//
				fruit = (String) adspin.getItem(position);
			}
			public void onNothingSelected(AdapterView parent) {
			}
		});

		mRating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
			public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
				mRateText.setText("Now Rate : " + rating);
				rate = rating;
				//채워넣을 곳//
				String tmp ;
				if(rate<1){
					tmp = "나빠";
				}else if(rate < 2.5)
					tmp = "괜찮아";
				else if(rate<3.9)
					tmp = "좋아!";
				else 
					tmp = "완전좋아~!!";
				Toast.makeText(fruitrating.this, fruit + "는 "+  tmp , Toast.LENGTH_SHORT).show();

			}
		});
	}
}
;

<string-array name="fruits">
<item>사과</item>
<item>감</item>
</string-array>
와 같이 xml에 넣어주었다.

rating chanaged 메서드와 , itemselected 메서드로 변화를 감지해서 클릭된 스피너의 아이템을 알아내고 그에 따라 토스트를 출력한다.