안드로이드 10일차

ParkJinYoung·2022년 10월 20일
public class WriteActivity extends AppCompatActivity {
    Button btn_go;
    EditText edt_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_write);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
        btn_go = findViewById(R.id.btn_go);
        edt_content = findViewById(R.id.edt_content);
        btn_go.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("content",edt_content.getText().toString());
                setResult(RESULT_OK,intent);
                finish();

            }
        });
    }
}
btn_write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,
                    WriteActivity.class);
                startActivityForResult(intent, REQUEST_WRITE);
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_LOGIN) {
                String id = data.getStringExtra("id");
                tv_title1.setText(id+"님 환영합니다");
                btn_write.setEnabled(true);
                btn_write.setBackgroundColor(Color.parseColor("#f47100"));
                btn_write.setTextColor(Color.parseColor("#ffc77d"));

                btn_login.setText("로그아웃");
            }
            else if(requestCode == REQUEST_WRITE){
                //write 하고 왔으면 listview에 데이터 추가
                //변수 이름이 같으면 구분하기위해서 필드 this. 붙여주기

                list.add(data.getStringExtra("content"));
                //adapter 새로고침하는 코드
                adapter.notifyDataSetChanged();
            }
        }
    }

}

커스텀

  • VO (DTO)
    -Value Object
    -사용자 정의 자료형
    -개발자가 필요에 의해 새롭게 정의한 자료형
    -ex)학생 한 명의 정보를 한묶음으로 묶어야겠다
    (DateBase의 한 행의 정보를 한묶음으로 묶어주고 싶다.)
    -구성요소 : 필드, 생성자, get/set, toString
public class DirectVO {
    // 1. 필드,
    // - 이 자료형이 저장해야 하는 변수들 (String title, String address)
    // - 캡슐화를 만족시켜야함 => 접근제한자 (private - 해당클래스, protected - 하위클래스, public - 누구나)
    private String title, address;

    // 2. 생성자 메소드
    // - 일반 메소드는 호출하여 실행가능
    // - 생성자 메소드는 객체 생성(new)할 때 딱 한 번만 자동으로 실행
    // - 이러한 특성 때문에 보통 필드 초기화(메모리에 최초로 값을 지정)하는 용도로 사용
    // - 변수에 값 저장하는 용도로 사용
    // - 일반메소드가 생성자 메소드가 되려면 >void를 적지않고 > 메소드의 이름을 클래스의 이름과 동일하게 작성한다

    public DirectVO(String title, String address) {
        this.title = title;
        this.address = address;
    }

    // 3. get/set
    // - 필드가 캡슐화를 만족하고 있기 때문에 (private 걸려있기 때문에) 접근이 아예 불가능
    // - 확인하는 용도로 필드값을 리턴하는 getter
    // - 수정하는 용도로 매개변수 값을 전달받아 필드에 저장하는 setter
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    // 4. toString
    // - 모든 클래스들의 최상위 클래스인 object 클래스에 정의된 메소드
    // - object에 정의된 내용은 객체의 주소를 리턴 => 그래서 println(객체) 하면 주소값이 출력
    // - VO에서는 toString 메소드를 오버라이딩(재정의)하여 필드값을 문자열로 만들어 리턴
    @Override
    public String toString() {
        // String을 + 연산하게 되면 메모리 낭비가 심함
        // StringBuffer
        StringBuffer temp = new StringBuffer();
        temp.append("DirectVO {");
        temp.append("title='");
        temp.append(title);
        temp.append(",address='");
        temp.append(address);
        temp.append("}");


        return temp.toString();//String 으로 한번에 만들어낸다.
    }

}

=============================
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;

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

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    // 템플릿, 데이터, 어뎁터

    //DirectVO 객체를 저장하는 ArrayList 생성하고
    //데이터 3개 저장

    ListView rv_main;
    Button btn_add;
    ArrayList<DirectVO> list;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
        rv_main = findViewById(R.id.rv_main);
        btn_add = findViewById(R.id.btn_add);

        list = new ArrayList<>();
        DirectVO vo1 = new DirectVO("네이버","https://www.naver.com/");
        DirectVO vo2 = new DirectVO("구글","https://www.google.com/");
        DirectVO vo3 = new DirectVO("유튜브","https://www.youtube.com/");

        list.add(vo1);
        list.add(vo2);
        list.add(vo3);






    }
}
profile
꾸준히

0개의 댓글