실습(로그인)


package com.example.ex_0713;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
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 {
EditText txt_id, txt_pw;
Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt_id = findViewById(R.id.txt_id);
txt_pw = findViewById(R.id.txt_pw);
btn_login = findViewById(R.id.btn_login);
// 로그인 버튼 클릭 시 id와 pw 값 가져오기
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String id = txt_id.getText().toString();
String pw = txt_pw.getText().toString();
// id : smhrd
// pw : 123
if(id.equals("smhrd") && pw.equals("123")){
// 회원이 맞습니다
// MainActivity2로 화면전환
// 이 때 "__님 환영합니다" 에 Id 띄워주기 위해 id값을 가지고 화면전환
Intent intent = new Intent(getApplicationContext(), MainActivity2.class);
intent.putExtra("id", id);
intent.putExtra("pw", pw);
startActivityForResult(intent,0);
}else{
Toast.makeText(getApplicationContext(), "로그인 실패", Toast.LENGTH_SHORT).show();
}
}
});
}
// 결과를 돌려받을 수 있는 메소드 생성하기
ActivityResultLauncher<Intent> mainLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode() == RESULT_OK){
Toast.makeText(getApplicationContext(), "성공", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "실패", Toast.LENGTH_SHORT).show();
}
}
}
);
}
package com.example.ex_0713;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity2 extends AppCompatActivity {
//1. Text 객체 선언
TextView txt_id2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//2. TextView id값 찾아오기
txt_id2 = findViewById(R.id.txt_id2);
//3. 넘어온 Intent로 부터 Intent값을 가져오기!
Intent intent = getIntent();
// String data = intent.getStringExtra("data");
// - id값 꺼내 오기
String id = getIntent().getStringExtra("id");
//4. TextView에 가져온 id값 띄우기 ex) " ~~님 환영합니다"
txt_id2.setText(id+"님 환영합니다");
}
}
Adapter View란?
- 하나의 뷰에 여러 데이터를 나열하고 그 중 하나를 사용자에게 선택 받는 뷰

리스트 실습

package com.example.ex_0713;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity5 extends AppCompatActivity {
ListView listView2;
// dataset 이 될 수 있는 배열 생성하기
// String[] dataset = new String[10];
ArrayList<String> dataset = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
listView2 = findViewById(R.id.listView2);
// 1~10 가지의 dataset 생성
for(int i = 1; i <= 15; i++){
dataset.add(String.valueOf(i));
// dataset[i-1] = i+"";
// dataset[i-1] = i.toString();
// dataset[i-1] = String.valueOf(i);
}
// Adapter 생성하기
// ArrayAdapter<String> adapter = new ArrayAdapter<context:Activity 정보, layout:사용하고자 하는 템플릿, dataset:실제로 띄워져야 하는 데이터셋+>();
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(), android.R.layout.simple_list_item_1, dataset);
// 보여질 수 있는 listView 영역에 해당 adapter 연결하기
listView2.setAdapter(adapter);
// lsitView2에 있는 항목을 선택했을 경우 해당하는 값을 Toast 메세지로 띄우기
listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// adapterView : 부모 AdapterView -> listview2
// view : 선택된 item의 view
// i : 선택된 항목의 위치값 ★★★
// l : 선택된 항목의 id값
Toast.makeText(getApplication(),dataset.get(i).toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
실습(입력 리스트)

package com.example.ex_0713;
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 java.util.ArrayList;
public class MainActivity6 extends AppCompatActivity {
EditText txt_msg;
Button btn_input;
ListView listview3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main6);
txt_msg = findViewById(R.id.txt_msg);
btn_input = findViewById(R.id.btn_input);
listview3 = findViewById(R.id.listview3);
ArrayList<String> dataset = new ArrayList<>();
// 사용할 adapter 최초 선언!
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplication(),
android.R.layout.simple_list_item_1,
dataset
);
// 버튼이 클릭되면 txt_msg 값을 listview3에 띄우기!
btn_input.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String msg = txt_msg.getText().toString();
txt_msg.setText("");
//데이터셋 추가하기!
dataset.add(msg);
// 데이터를 layout과 연결할 adapter 생성!
listview3.setAdapter(adapter);
}
});
//항목을 길게 클릭할 경우 해당 내용 삭제하는 이벤트 만들기!
listview3.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
dataset.remove(i);
//삭제 이후 최종적인 데이터를 가지고 adapter를 띄울 수 있도록
//갱신 작업 진행하기!
adapter.notifyDataSetChanged();
return true;
//false : 해당 과정이 끝나고 나서 데이터를 다른곳에서 사용하겠다! -> 선택 내용에 대한 유지가능!
//true : 해당 과정이 끝나고 나서 데이터 유지x
}
});
}
}