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차시에 한 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;
}
}
});
}
}
정규화
제 1 정규화
제 2 정규화
제 3 정규화
BCNF
반정규화
정규화를 이미 한 상태에서 데이터 중복을 허용하고 조인을 줄이는 것을 통해 데이터 베이스의 조회 성능을 향상하는 방법
아주 유용한 정보네요!