모각코 3회차 결과

송민영·2023년 7월 19일
0

1. android studio ListView 공부하기

1. LinearLayout 을 사용한 ListView 공부하기

activity_main.xml 화면

MainActivity.java 코드

package com.example.practice_5;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    // ListView 타입의 변수 list 선언
    private ListView list;

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

        // 위에서 선언한 list 변수에 xml의 ListView의 id를 불러와서 연동하기
        list = (ListView) findViewById(R.id.list);

        // List 객체의 배열 생성 (String 형태로)
        // List <{type}> {valuable name} = new ArrayList<>();
        List<String> data = new ArrayList<>();

        // List 배열과 ListView를 연결하기 위해 adapter (다리 역할)가 필요함
        // ArrayAdapter <{type}> adapter = new ArrayAdapter( Activity.java , {사용하려는 ListView 디자인}, {List 배열이 담겨있는 참조변수});
        // this : 현재 창의 Activity
        // android.R.layout.simple_list_item_1 : android 에서 제공하는 기본 리스트 양식
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);

        // list에 setAdapter( {Adapter형의 변수} ) 메서드를 통해 list와 adapter을 연결
        list.setAdapter(adapter);

        // 리스트에 들어갈 항목 추가
        data.add("송");
        data.add("민");
        data.add("영");

        // 데이터 저장 완료
        adapter.notifyDataSetChanged();

    }
}

참고자료 :
https://www.youtube.com/watch?v=snnqxAEf9rI&list=PLC51MBz7PMyyyR2l4gGBMFMMUfYmBkZxm&index=7

2. constranintLayout을 이용하여 xml의 inputType 공부 및 Register 알고리즘 만들기

2차시에 한 chat app에서 각 Id와 Password의 inputtype을 정해준 모습

activity_main.xml의 코드

<!--android:hint = "Id"
    연한 글씨로 Id 글자를 나타내며, 글자를 작성하는 즉시 사라짐
    
    android:inputType="textEmailAddress"
    inputType을 email의 형태로 작성하며, 이는 나중에 firebase와 연관하기 위해서임
    참고로 키보드에 '@'버튼이 생김-->
    
    <EditText
        android:id="@+id/et_Id"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/tv_Title"
        android:layout_marginTop="10dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:hint="Id"
        android:inputType="textEmailAddress"
        />


    <!--    android:hint = "Password"
        연한 글씨로 Password hint를 띄움
        
        android:inputType="textPassword"
        inputType(사용자의 입력 타입)을 textPassword(문자열 가림)으로 설정-->
    
    <EditText
        android:id="@+id/et_Password"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/et_Id"
        android:layout_marginTop="10dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:hint="Password"
        android:inputType="textPassword"
        />

MainActivity.java 코드 모습 - Register 부분 참고

package com.example.chatting_2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    // Button 타입의 변수 선언
    private Button btn_login;

    // EditText 타입의 변수 선언
    private EditText et_Id;
    private EditText et_Password;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 이 문구가 xml에서 id값을 찾을 수 있도록 연동하는 역할을 함
        setContentView(R.layout.activity_main);

        //         --- Login -----
        // Login을 통해 다음 ChatActivity로 넘어갈 수 있도록 함

        // 위에서 선언한 btn_login 변수를 xml에서 선언한 Login Button 의 id를 불러와서 저장함
        btn_login = (Button) findViewById(R.id.btn_login);


        // btn_login을 클릭했을 때 수행되는 부분
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // makeText( {설정한 Activity.this}, {화면에 띄우고 싶은 Text}, Text를 띄울 시간).show() 메서드를 사용
                // 화면에 {Text}를 설정한 시간만큼 띄우는 역할을 수행함
                Toast.makeText(MainActivity.this, "Login", Toast.LENGTH_SHORT).show();

                // Intent 객체를 선언해서 MainActivity.this 에서 ChatActivity.class 로 화면전환 할 수 있도록 함
                Intent intent = new Intent(MainActivity.this, ChatActivity.class);

                // startActivity({Intent 변수}) 메서드를 사용하여 화면 전환 실제로 실행하는 부분
                startActivity(intent);

            }
        });


        //         --- Register ---
        // Register을 통해 id와 password를 저장할 수 있도록 함


        // findViewById 메서드로 xml의 각 id값을 찾아 연결해주기
        et_Id = (EditText) findViewById(R.id.et_Id);
        et_Password = (EditText) findViewById(R.id.et_Password);

        // Button 타입의 btn_register 선언 후 xml의 Button id값 찾아 연결하기
        Button btn_Register = (Button) findViewById(R.id.btn_register);

        // btn_Register을 클릭했을 때 실행하는 부분
        btn_Register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // et_(Id,Password)의 text를 문자열(toString)로 받아오는(getText) 과정
                String str_Email = et_Id.getText().toString();
                String str_Password = et_Password.getText().toString();

                // Id 부분이 빈칸일 경우 setOnClickListener 메서드를 return을 통해 종료시킴
                if(str_Email.isEmpty() ){
                    Toast.makeText(MainActivity.this, "Please insert Email", Toast.LENGTH_LONG).show();
                    return;
                }
                // Password 부분이 빈칸일 경우 setOnClickListener 메서드를 return을 통해 종료시킴
                if(str_Password.isEmpty()){
                    Toast.makeText(MainActivity.this, "Please insert Password", Toast.LENGTH_LONG).show();
                    return;
                }


            }
        });

    }
}

참고자료 :
https://www.youtube.com/watch?v=se_dQYhf_nk

2. SQLD 1-2 데이터 모델링과 성능 공부하기

<중요 내용 요약>

정규화

제 1 정규화

  • 속성의 원자성 확보
  • 기본키를 설정

제 2 정규화

  • 기본키가 2개 이상의 속성 -> 부분 함수 종속성을 제거 = 분리

제 3 정규화

  • 기본키를 제외한 칼럼 간에 종속성을 제거 = 이행 함수 종속성 제거

BCNF

  • 기본키를 제외한 후보키 중 기본키를 종속시키면 분해

반정규화
정규화를 이미 한 상태에서 데이터 중복을 허용하고 조인을 줄이는 것을 통해 데이터 베이스의 조회 성능을 향상하는 방법

참고자료 :
https://starrykss.tistory.com/1987

profile
컴퓨터융합학부

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

아주 유용한 정보네요!

답글 달기