IT/Android Studio

Android Studio s25ListViewDemo03 (삭제 기능 )

Millennials 2020. 7. 2. 15:20

1)activity_main

2)

package kr.android.s25listviewdemo03;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

        ArrayList<String> items;
        ArrayAdapter<String> adapter;
        ListView list;
        EditText edit;
        Button add,delete;

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

            //데이터 저장소 생성
            items = new ArrayList<String>();
            items.add("First");
            items.add("Second");
            items.add("Third");

            //ArrayAdapter 생성
            adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_single_choice, items);
            list=(ListView)findViewById(R.id.list);

            //ListView에 ArrayAdapter 등록
            list.setAdapter(adapter);
            list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

            edit = (EditText)findViewById(R.id.newitem);
            add = (Button)findViewById(R.id.add);
            delete = (Button)findViewById(R.id.delete);

        }

        public void onClick(View view) {
            switch (view.getId()){
                case R.id.add:
                    String text = edit.getText().toString();
                    if(text.length()>0){
                        //데이터를 ArrayList에 저장
                        items.add(0,text);
                        //신규 데이터가 보여지도록 ListView 갱신
                        adapter.notifyDataSetChanged();
                        //EditText 초기화
                        edit.setText("");
                    }
                    break;
                case R.id.delete:
                    int id = list.getCheckedItemPosition();
                if(id != ListView.INVALID_POSITION){//정상적으로 삭제할 데이터를 선택한 경우
                    //지정한 데이터의 위치값을 이용해서 ArrayList(items)의 데이터를 삭제
                    items.remove(id);
                    //radio 초기화
                    list.clearChoices();
                    //변경된 데이터를 ListView에 반영하기 위해 ListView 갱신
                    adapter.notifyDataSetChanged();
                }

            }
    }
}

3) 실행

반응형