개발자/Android

안드로이드 리스트 뷰 만들어 붙이는 방법 두가지로

지구빵집 2012. 12. 11. 09:30
반응형


데이터와 리스트뷰를 연결할 어댑터를 생성할 때 두 가지 방법이 있는데 그 중 한개가 


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);


나머지는 동일하다.


구현방법을 여러가지로 알아두는게 개발시간을 단축하는것이 아닐까.



반응형