App을 만들다 보니 목록을 만들어 사용자가 목록에서 선택한 값을 받아 처리할 일이 생겼다. 일단 가볍게 ListView의 기본 구조를 살펴보고 그 동작 원리를 파악하여 응용을 하려 한다.

1. 목적 : ListView의 사용법을 습득해 보자.

2. 개발 환경
 - PC : Windows 7, Android Studio 1.4.1(64-bit)
 - Phone : LG G pro Lollipop(API 21)

3. 참고자료
 1) Using lists in Android (ListView) - Tutorial (http://www.vogella.com/tutorials/AndroidListView/article.html)
 2) berabue 블로그 - ListView의 사용 및 Customizing (http://berabue.blogspot.kr/2014/05/android-listview.html)
 3) 미르의 IT 정복기 (http://itmir.tistory.com/477)

4. 과정
 1) activity_main.xml(layout을 설정)에 ListView layout을 다음과 같이 선언해 둔다.


<?
xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

      <ListView
          android:id="@+id/listview"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" />

</RelativeLayout>

 

 2) MainActivity.java(ListView의 Activity와 관련된 code 작성)에 App 생성시 ListView의 동작에 관한 code를 다음과 같이 작성한다. 이 때, 다른 variable과는 달리 ListView는 ListView 자체의 layout을 위 activity_main.xml과 같은 app의 layout에 적용시키는 역할을 하는 "Adapter"가 필요하다.


public class
MainActivity extends AppCompatActivity {

    public ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = (ListView)findViewById(R.id.listview); // 앞서 activity_main.xml에서 정의한 listview에 대하여 ListView 변수 정의
        String[] listVal = new String[] { "감자", // listView에 반영될 항목을 String[] (배열, Array) 변수로 정의
                "사과",
                "배",
                "양파",
                "호박"
        };

        final ArrayList<String> list = new ArrayList<String>(); // String 변수들을 받는 ArrayList 변수를 선언하여 위 String[] 변수를 반영
        for (int i = 0; i < listVal.length; ++i) {
            list.add(listVal[i]);
        }

        // ArrayAdapter를 통해 Android API platform의 'res' library에 simple_list_item_1.xml에 상응하는 형태로 위의 list를 listView에 반영
        final ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
        listView.setAdapter(mAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ // listView에 반영된 item을 Click할 경우 다음 동작을 수행
            @Override
            public void onItemClick(AdapterView<?> parent, final View view, int position, long id){
                final String item = (String) parent.getItemAtPosition(position); // 선택한 값을 String 문자열로 받아들여 Toast 출력
                Toast.makeText(getApplicationContext(), item + " is selected!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

 

(위 Code의 실행 결과)

      

 

 

 

 

 

 

 

+ Recent posts