Android_8일차

홍성채·2022년 4월 14일
0

Android

목록 보기
14/27
post-thumbnail
  • ListView

    1. 리스트 형태로 된 어댑터 뷰 중 하나
    2. 상하로 스크롤 가능
    3. 설정화면, 주소록 등에서 사용
    4. 많은 양의 데이터 표현
    • 실습하기

    • 뷰 구성하기

    • 변수에 id 등록하기

      edtData = findViewById(R.id.edt);
      btn_register = findViewById(R.id.btn_register);
      
      lv = findViewById(R.id.lv);
    • ArrayList 선언 후 등록시키기

      list = new ArrayList<String>();
      list.add("벤치프레스");
      list.add("인클라인 벤치프레스");
      list.add("시티드 로우");
      list.add("데드리프트");
      list.add("바벨로우");
      list.add("덤벨 프레스");
      list.add("레그 프레스");
      list.add("스쿼트");
      list.add("플라이");
      list.add("프로틴");
      list.add("단백질");
      list.add("스테로이드");
    • ArrayAdapter에 list 넣기

      ```java
      adapter = new ArrayAdapter<String>(
              MainActivity.this,
              android.R.layout.simple_expandable_list_item_1,
              list
      );
      
      lv.setAdapter(adapter);
      ```
      • ArrayAdapter(현재 액티비티명.class, 레이아웃, 데이터)
        • 레이아웃 : 리스트 뷰에 보여질 아이템 뷰
        • 데이터 : 마이템 뷰에 출력할 데이터
    • 클릭 이벤트 설정하기

       lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
               String data = list.get(i);
               Toast.makeText(MainActivity.this,"선택한 항목 : "+data,Toast.LENGTH_SHORT).show();
           }
       });
      • adapterView : 클릭이 일어난 AdapterView 반환
      • view : 클릭한 아이템 뷰를 view 객체로 반환
      • i,j는 사용자가 클릭한 뷰 인덱스(위치)를 반환
    • 버튼의 기능 넣기

       btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String edtdata = edtData.getText().toString();
                adapter.add(edtdata);
                //list.add(edtdata);
                //adapter.notifyDataSetChanged();
                edtData.setText("");
            }
        });

      주석 처리된 부분으로 실행을 해도 동작한다.

  • 길게 클릭 시 삭제 기능 넣기

    • 클릭 이벤트 설정하기

       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 dat = list.get(i);
                adapter.remove(dat);
      
                return false;
            }
        });
  • 전체 소스

package com.example.ex0414;

import androidx.appcompat.app.AppCompatActivity;

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 {
    ListView lv;
    ArrayAdapter<String> adapter;
    ArrayList<String> list;
    EditText edtData;
    Button btn_register;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edtData = findViewById(R.id.edt);
        btn_register = findViewById(R.id.btn_register);

        lv = findViewById(R.id.lv);
        list = new ArrayList<String>();
        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<String>(현재 액티비티명.this, 레이아웃, 데이터);
        //레이아웃 : 리스트 뷰에 보여질 아이템 뷰
        //데이터 : 마이템 뷰에 출력할 데이터
        adapter = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_expandable_list_item_1,
                list
        );

        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            //adapterView 는 클릭이 일어난 AdapterView
            //view : 클릭한 아이템 뷰를 view 객체로 반환
            // i,j는 사용자가 클릭햇을 뷰 인덱스를 반환

            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String data = list.get(i);
                Toast.makeText(MainActivity.this,"선택한 항목 : "+data,Toast.LENGTH_SHORT).show();
            }
        });
        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 dat = list.get(i);
                adapter.remove(dat);

                return false;
            }
        });
        //버튼 클릭 시 ListView에 저장
        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String edtdata = edtData.getText().toString();
                adapter.add(edtdata);
                //list.add(edtdata);
                //adapter.notifyDataSetChanged();
                edtData.setText("");
            }
        });
   }
}
profile
초보 코딩

0개의 댓글