본문 바로가기
모바일앱 프로젝트

안드로이드 리스트뷰 만들기

by Nicole 2021. 3. 30.

기존의 프로젝트에서 버튼을 사용해서 갤러리와 이미지 처리 activity로 각각 넘어갔었다.

미관상.. 보기 불편해서 gridview로 이쁘게 만들까 하다가,

원래 기획대로 리스트뷰로 재구성해봤다.

listView라는 empty activity를 하나 생성해주었다.

 

- activity_list_view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.bg_rem.act.activity.listView"
    tools:showIn="@layout/activity_list_view">

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

</RelativeLayout>

ListView는 EditText 나 ImageView와 같이 사용자가 정의한 데이터 목록을 아이템 단위로 구성하여 화면에 출력하는 ViewGroup의 종류이다.

 

ListView에 사용자 지정 데이터를 활용해 화면에 표시하기 위해서는 Adapter 클래스를 사용해야 한다.

사용자 데이터와 화면 출력 View 의 두 부분을 이어주는 역할이라고 보면 된다.

 

- listView.java

public class listView extends AppCompatActivity {
    private final String TAG = getClass().getSimpleName();
    // 카테고리 커스텀 지정
    static final String[] LIST_MENU = {"Jacket", "Top", "Bottom", "Shoes", "Accs", "Image upload"};

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

        Intent myIntent = getIntent(); // gets the previously created intent
        String userId = myIntent.getStringExtra("firstKeyName");
        String addr = myIntent.getStringExtra("server_addr");

		// string 배열을 입력으로 받기 때문에 ArrayAdapter를 사용.
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, LIST_MENU) ;

        ListView listview = (ListView) findViewById(R.id.listView);
        listview.setAdapter(adapter);

		// 해당 선택 사항의 문자열 데이터를 받아온다.
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View v, int position, long id) {

                // position으로 해당 값을 받아와서 원하는 처리를 할 수 있다.
                String strText = (String) parent.getItemAtPosition(position) ;
                if (strText.equals("DEFAULT_STRING")) {
                    ...
                }
                else {
                    ...
                }

            }
        }) ;
    }
}

 

안드로이드 디바이스에서의 모습을 확인해본 결과는 다음과 같다.

버튼으로 구성되어 있을 때 보다 낫다.

 

 

 

 

 

REFERENCE

1. ListView 사용 관련 참고

recipes4dev.tistory.com/42

 

안드로이드 리스트뷰 기본 사용법. (Android ListView)

1. 안드로이드 ListView ListView는 사용자가 정의한 데이터 목록을 아이템 단위로 구성하여 화면에 출력하는 ViewGroup의 한 종류입니다. ListView의 아이템들은 세로 방향으로 나열되며, 아이템의 개수

recipes4dev.tistory.com

댓글