IOS를 사랑하는 AOS 개발자

[Android] 안드로이드 ListView (feat.ArrayAdapter) 본문

Android ( JAVA )/개발

[Android] 안드로이드 ListView (feat.ArrayAdapter)

아사안개 2021. 12. 28. 22:32
반응형
SMALL

👼🏻 초보 안드로이드 개발자가 매번 구글링하기 싫어서 정리하는 블로그 👼🏻 

 

안녕하세요 🤗

 

2021.12.26 - [Android/개발] - [Android] 안드로이드 ListView (feat.Adapter)

 

[Android] 안드로이드 ListView (feat.Adapter)

👼🏻 초보 안드로이드 개발자가 매번 구글링하기 싫어서 정리하는 블로그 👼🏻 안녕하세요!! 오늘은 리스트뷰를 해볼거에요 리스트가 필요한데 xml 에 Textview를 계속 나열한다..? 그건... 넘

devziner.tistory.com

 

저번에 작성했던 Adapter 와는 조금 다른 ( 사실 잘 안쓰는것같긴한데.....)

ArrayAdapter 를 사용해서

ListView 에 내용을 추가하고 삭제하는것을 해볼거에요!!!

간단하게 뷰부터 그립시다!

 

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    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"
    tools:context=".MainActivity"
    android:padding="20dp">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <EditText
            android:id="@+id/et_text"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_margin="5dp"
            />
        <Button
            android:id="@+id/btn_add"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="ADD"
            android:layout_margin="5dp"
            android:backgroundTint="#009688"
            />
        <Button
            android:id="@+id/btn_delete"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Delete"
            android:layout_margin="5dp"
            android:backgroundTint="#F44336"
            />
    </LinearLayout>
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

 

뷰에 진심인편...😏

 

후딱후딱 우리 이제 코드짜러가봅시다

반응형
MainActivity
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    
    // 전역변수
    ArrayList<String> items;
    ArrayAdapter<String> adapter;
    ListView list;

    EditText et_text;
    Button btn_add, btn_delete;

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

        // 데이터 미리 준비
        items =new ArrayList<String>();
        items.add("안녕하세요!");
        items.add("IOS 를 사랑하는");
        items.add("AOS 초보 개발자에요 :)");
    
        // Adapter 준비
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,items);
        
        // xml 연결
        et_text = findViewById(R.id.et_text);
        btn_add = findViewById(R.id.btn_add);
        btn_delete = findViewById(R.id.btn_delete);
        list = findViewById(R.id.list);

        // 리스트에 adapter 연결
        list.setAdapter(adapter);
        list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        
        // 리스트의 값 클릭 리스너
        list.setOnItemClickListener(mItemClickListener);

        // 버튼 클릭 리스너
        btn_add.setOnClickListener(mClickListener);
        btn_delete.setOnClickListener(mClickListener);
    }

    View.OnClickListener mClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                // 리스트에 추가하기
                case R.id.btn_add:
                    String text = et_text.getText().toString();
                    if (text.length() != 0){
                        items.add(text); // 추가될 내용을 ArrayList 에 추가한다.
                        et_text.setText(""); // 추가했으니 입력창을 빈칸으로 초기화
                        adapter.notifyDataSetChanged(); // ArrayList 재구성
                    }
                    break;
                // 리스트에서 선택 내용 삭제하기
                case R.id.btn_delete:
                    int index;
                    index = list.getCheckedItemPosition(); // 리스트중 선택한 index 가져오기
                    if(index != ListView.INVALID_POSITION){
                        items.remove(index); // index 값을 ArrayList 에서 지운다.
                        list.clearChoices(); // 지운 index 를 listView 에서도 지운다.
                        adapter.notifyDataSetChanged(); // ArrayList 재구성
                    }
                    break;
            }

        }
    };

    AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String message = "선택한 내용 : " + items.get(position);
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
        }
    };
}

 

new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,items)

들어가는 파라미터는

this 쉽게 말하면 사용할 화면. 여기서는 MainActivity
android.R.layout.simple_list_item_single_choice 안드로이드에서 제공해주는 레이아웃. 커스텀 가능
items 사용할 ArrayList

 

간단하게 설명하면 이렇게 구성되어있어요!!!!

 

ArrayAdapter 만의 제공되는 메소드들을 활용해서 작성한 코드이구

구현 영상 갑시다요!

SMALL

 

 

이걸로 오늘 코드는 끄읏!

 

봐주셔서 감사합니다 :)

반응형
LIST
Comments