리스트뷰 TwoLine ListView

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

Android_Basic

목록 보기
14/19

TwoLine ListView

  • 리스트뷰의 항목 하나에 두 가지 문자열을 보여줄 때 사용한다.

  • 다른 리스트뷰를 제공하는 것은 아니고 항목 하나의 모양을 만들 때 사용할 레이아웃에 TextView가 두 개 존재하면 된다.

  • 안드로이드 OS 자체에서 제공되는 레이아웃 파일을 사용하면 된다.


SimpleAdapter

  • 리스트뷰를 구성할 때 항목 하나에 배치된 뷰 중 두 개 이상의 뷰에 값을 셋팅할 때 사용하는 Adapter 이다.

  • 사용할 레이아웃 파일과 데이터항목외에 어떤 데이터를 어떤 뷰에 셋팅할지도 결정해 줘야 한다.


SimpleAdapter를 사용하면 원하는 뷰에 원하는 데이터를 설정할 수 있다.

package com.androidbasic.a16twolinelistview;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Parcelable;
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 {


    //리스트뷰의 항목을 구성하기 위한 문자열 배열
    String [] data1 = {
            "문자열1","문자열2","문자열3","문자열4","문자열5","문자열6"
    };

    String [] data2 = {
            "String1","String2","String3","String4","String5","String6"
    };

    //뷰의 주소값을 담을 참조변수
    ListView listView;
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //뷰의 주소값을 담는다
        listView = (ListView)findViewById(R.id.list1);
        textView = (TextView)findViewById(R.id.textView);

        //데이터를 담을 ArrayList
        ArrayList<HashMap<String,String>> data_list = new ArrayList<HashMap<String, String>>();
        //ArrayList에 데이터를 담는다
        for(int i = 0; i < data1.length; i++){
            HashMap<String,String> map = new HashMap<String, String>();
            map.put("str1",data1[i]);
            map.put("str2",data2[i]);

            data_list.add(map);
        }
        String [] keys = {
                "str1","str2"
        };
        int [] ids ={
                android.R.id.text1,android.R.id.text2
        };
        //어뎁터를 리스트뷰에 세팅한다.
        SimpleAdapter adapter = new SimpleAdapter(this,data_list, android.R.layout.simple_list_item_2,keys,ids);
        listView.setAdapter(adapter);

        //리스트뷰에 리스너 세팅
        ListListener listListener = new ListListener();
        listView.setOnItemClickListener(listListener);
    }
    class ListListener implements AdapterView.OnItemClickListener{
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            textView.setText(data1[position]);
        }
    }
}

실습 Git

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

0개의 댓글

관련 채용 정보