본문 바로가기

Android/View

[Android] 리스트 영역 나누기(1) - 간단한 리스트 만들기

리스트에서도 영역을 나누어 각기 다른 역할을 수행하도록 하고 싶을때가 있다. 특히 체크박스를 포함시킨 리스트는 리스트 선택이 되지 않기때문에 이런 문제를 해결하기 위해서도 영역을 나누어준것이 좋다.

일단 리스트를 만들어준다. 리스트 만드는 방법은 아래 링크에서 자세히 볼 수 있음.

커니님의 블로그 : #11. List 집중공략! - (3) Custom ArrayAdapter를 이용한 ListView

이제 간단한 리스트를 만들어 보도록하자.

main.xml



list_items.xml



DevideArea.java
package list.area;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class DevideArea extends Activity {

	private String[] values = { "가", "나", "가", "나", "가", "나", "가", "나", "가",
			"나", "가", "나" };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

                // 레이아웃 파일의 리스트뷰를 가져와 커스텀어답터를 세팅한다.
		final ListView listView = (ListView) findViewById(R.id.listView);
		AreaList al = new AreaList(this, 0);
		listView.setAdapter(al);

	}

	private class AreaList extends ArrayAdapter {

		public AreaList(Context context, int textViewResourceId) {
			super(context, textViewResourceId);

		}

                 // 배열의 길이를 리턴하여 리스트의 개수를 계산한다.
		@Override
		public int getCount() {
			return values.length;
		}

                 // 배열의 개수만큼 리스트를 만든다.
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {

			if (convertView == null) {

				LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				convertView = vi.inflate(R.layout.list_items, null);

			}

			if (values[position] != null) {

				TextView tv = (TextView) convertView.findViewById(R.id.textView);

				if (tv != null) {

					tv.setText(values[position]);

				}

			}

			return convertView;

		}

	}
}

위의 소스는 하나의 리스트에 하나의 텍스트뷰만 나타나는 아주 간단한 리스트이다. 이제 이곳에 체크박스를 추가하도록 하자.
list_items.xml을 아주 약간만 수정한다.



	
	


위와 같이 수정해주면 체크박스와 텍스트만 달랑있는 리스트가 보여지게 될것이다. 하지만 지금상태에서는 체크박스만 동작을 할 것이다.