ListView

박승현·2022년 4월 21일
0

안드로이드

목록 보기
3/4
post-thumbnail

🤔 ListView 란?


  • 리스트 형태로 된 어댑터 뷰 중 하나
  • 상하로 스크롤 가능

📌 ListView 실습

1.화면 구성

<아이디사진>

① legecy > ListView 배치
② 가이드라인-horizontal (90%)
③ plainText 배치
④ button 배치
⑤ id 설정

2.?

  • mainActivity.java
    ① 객체 설정
ListView lv;
ArrayAdapter adapter;
ArrayList<String> list;

Button btnRegister;
EditText edtData;

② 초기화

lv = findViewById(R.id.lv);
list = new ArrayList<String>();
edtData = findViewById(R.id.edtData);
btnRegister = findViewById(R.id.btnRegister);

③ 리스트 추가

list.add("떡복이");
list.add("해물탕");
list.add("간장찜닭");
list.add("김치찜");
list.add("닭볶음탕");
list.add("부대찌개");
list.add("계란후라이");
list.add("버팔로윙");
list.add("딸기생크림케이크");
list.add("김치리조또");
list.add("쫄병스넥");
list.add("초밥");
list.add("연어덮밥");
list.add("콜라");
list.add("사이다");
list.add("환타");
list.add("치즈스틱");
list.add("치즈볼");

④ 어댑터 객체 생성
new ArrayAdapter(현재 액티비티명.this,레이아웃,데이터)

adapter = new ArrayAdapter<String>(
              MainActivity.this,
              android.R.layout.simple_list_item_1,
              list
      );

⑤ 어댑터를 리스트 뷰에 넣기

lv.setAdapter(adapter);

3.이벤트 적용

아이템 하나하나 개별적으로 적용되어야 하기 때문에
setOnItemClickListener

      lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
              // 클릭이 일어난 AdapterView
              //view: 클릭한 아이템뷰를 뷰객체로 반환
              //i,l 클릭한 아이템뷰의 행 인덱스를 반환

              
              String data = list.get(i);
              Toast.makeText(MainActivity.this, "선택한 항목:"+data, Toast.LENGTH_SHORT).show();

          }
      });

4.가이드라인,레이아웃

이후 객체 생성,버튼 초기화까지 하세요

5.데이터 추가 이벤트

        btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //저장
                String food = edtData.getText().toString();
                //어딘가에는 저장을 해야하는데?
                adapter.add(food);
                //디폴트한 데이터를 어댑터 생성할때 넣어지는데
                //이후 추가는 추가+갱신(update)한게 필요
                //업데이트 한 내용을 갱신해주면서 리스트 뷰에 반환해주는 메소드지만
				//지금은 안써도 추가된다네요!
                //adapter.notifyDataSetChanged();
				//list.add(food) 해도 동작이 되긴합니다.
            }
        });

6.longClick 삭제 이벤트 추가

        //4.롱클릭시 아이템 삭제하는 기능 구현
        lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this, "롱클릭!", Toast.LENGTH_SHORT).show();

                //어떤 뷰를 선택했느냐에 따라서 지워져야하기 때문에
                //우선 리스트로부터 데이터 꺼내와서 삭제할 데이터를 담아주면 삭제 진행된다!
                String  food = list.get(i);
               adapter.remove(food);
                return false;
            }
        });

0개의 댓글