데이터와 리스트뷰를 연결할 어댑터를 생성할 때 두 가지 방법이 있는데 그 중 한개가
1번의 생성자 형태는 ArrayAdapter (Context context, int textViewResourceId, T[] objects);
다른 하나가 ArrayAdapter<String>(Context context, int textViewResourceId, List<String> objects) 요런 생성자를 가지고 있다.
우선 2번을 구현한 코드는 아래와 같다.
메인 레이아웃을 아래와 같이 만들어 둔다. 리스트 퓨 가 하나이고 통째로 다 사용한다.
파일이름 : mugrn_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/mainmenulist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
구현 코드는 아래와 같다.
private ListView _listview;
private String[] items = { "악기와 음색", "음이름", "음표", "박자표", "셈여림", "당김음",
"악보형식", "셈여림표", "연주법", "악보의 이동" };
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mugen_main);
_listview = (ListView)findViewById(R.id.mainmenulist);
_listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
_listview.setOnItemClickListener(onItemClickListener);
}
//아래가 리스너로 리스트 항목 클릭시 나타나는 액티비트들을 호출한다.
private OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
if(position == 0){
Intent intent = new Intent(MugenMainActivity.this, Base009.class);
startActivity(intent);
}
if(position == 1){
Intent intent = new Intent(MugenMainActivity.this, Base000.class);
startActivity(intent);
}
if(position == 2){
Intent intent = new Intent(MugenMainActivity.this, Base001.class);
startActivity(intent);
}
if(position == 3){
Intent intent = new Intent(MugenMainActivity.this, Base002.class);
startActivity(intent);
}
if(position == 4){
Intent intent = new Intent(MugenMainActivity.this, Base003.class);
startActivity(intent);
}
if(position == 5){
Intent intent = new Intent(MugenMainActivity.this, Base004.class);
startActivity(intent);
}
if(position == 6){
Intent intent = new Intent(MugenMainActivity.this, Base005.class);
startActivity(intent);
}
if(position == 7){
Intent intent = new Intent(MugenMainActivity.this, Base006.class);
startActivity(intent);
}
if(position == 8){
Intent intent = new Intent(MugenMainActivity.this, Base007.class);
startActivity(intent);
}
if(position == 9){
Intent intent = new Intent(MugenMainActivity.this, Base008.class);
startActivity(intent);
}
}
};
}
1번을 구현하는 다른 코드는 아래와 같다. 틀린점은 어댑터로 공급될 데이터 원본을 만들어주는 방법차이. 여기서는 데이터 컬렉션을 만들어 넣어주는 방법이고, 위의 방법은 단순히 배열을 넣어주는 방법.
ArrayList<String> arGeneral;
arGeneral = new ArrayList<String>();
arGeneral.add("음이름");
arGeneral.add("음표");
arGeneral.add("박자표");
arGeneral.add("셈여림");
arGeneral.add("당김음");
arGeneral.add("악보형식");
arGeneral.add("셈여림표");
arGeneral.add("연주법");
arGeneral.add("악보의 이동");
arGeneral.add("다양한 음색");
ArrayAdapter<String> Adapter;
Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arGeneral);
setListAdapter(Adapter);
나머지는 동일하다.
구현방법을 여러가지로 알아두는게 개발시간을 단축하는것이 아닐까.
'개발자 > Android' 카테고리의 다른 글
안드로이드 리스트뷰에 사전식 인덱스를 Seekbar 로 구현하기 (0) | 2013.01.07 |
---|---|
잘 만든 midi 파일 생성 프로그램과 미디파일 분석 문서 (5) | 2013.01.03 |
안드로이드에서 쓸 수 있는 핵심 제스처 설명 (0) | 2012.12.17 |
상대 레이아웃을 사용하여 이미지와 텍스트로 안드로이드 버튼 만들기 (0) | 2012.12.13 |
[Accessibility] Missing contentDescription attribute on image 경고 (0) | 2012.12.10 |
안드로이드 작업 폴더에 .bak 파일 있으면 에러나요~ (0) | 2012.12.10 |
RGB 16진수 색상표 (0) | 2012.12.07 |
옵션메뉴 같은 각 액티비티에 공통인 코드 처리 방법 (0) | 2012.12.05 |
더욱 좋은 정보를 제공하겠습니다.~ ^^