커스텀 리스트뷰2 Cumtom ListView2

INI-K (이니케이)·2021년 7월 24일
0

Android_Basic

목록 보기
13/19

Custom ListView2

  • 리스트뷰를 구성할 때 항목 하나의 모양을 개발자가 직접 만들어 사용할 수 있다.

  • 항목 하나에 배치된 뷰 중 2개 이상의 뷰에 데이터를 셋팅할 때는 SimpleAdapter를 사용한다.


두 개 이상의 뷰에 데이터를 셋팅할 경우에는 SimpleAdapter를 사용한다.

package com.androidbasic.a15listviewcustom2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    //리스트뷰 항목에 세팅한 데이터
    int[] imgRes = {
            R.drawable.imgflag1, R.drawable.imgflag2, R.drawable.imgflag3, R.drawable.imgflag4, R.drawable.imgflag5, R.drawable.imgflag6, R.drawable.imgflag7, R.drawable.imgflag8,
    };

    String[] data1 = {
            "토고", "프랑스", "스위스", "스페인", "일본", "독일", "브라질", "대한민국"
    };

    String[] data2 = {
            "togo", "france", "swiss", "spain", "japan", "germen", "brazil", "Korea"
    };

    //뷰의 주소 값을 담을 참조 변수
    ListView listView;
    TextView textView3;


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

        //뷰의 주소값을 받아온다.

        listView = (ListView) findViewById(R.id.list1);
        textView3 = (TextView) findViewById(R.id.textView3);

        //데이터를 가지고있는 어뎁터 세팅한다.
        ArrayList<HashMap<String, Object>> data_list = new ArrayList<HashMap<String, Object>>();

        //데이터를 담는다
        for (int i = 0; i < imgRes.length; i++) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("flag", imgRes[i]);
            map.put("data1", data1[i]);
            map.put("data2", data2[i]);
            data_list.add(map);
        }
        //해시 맵 객체에 데이터를 저장할때 사용한 이름 배열
        String[] keys = {
                "flag", "data1", "data2"
        };
        int[] ids = {
                R.id.imageView, R.id.textView, R.id.textView2
        };

        //어뎁터를 만들어준다.

        SimpleAdapter simpleAdapter = new SimpleAdapter(this,data_list,R.layout.row,keys,ids);
        listView.setAdapter(simpleAdapter);

        //리스터 세팅
        ListListener listListener = new ListListener();
        listView.setOnItemClickListener(listListener);
    }
    
    //리스트뷰의 항목을 터치하면 반응하는 리스너
    class ListListener implements AdapterView.OnItemClickListener{
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            textView3.setText(data1[position]);
        }
    }
}

실습 Git

profile
긍정적인 개발자를 꿈꾸는 김태환입니다.

0개의 댓글

관련 채용 정보