학교/Android

DBpersonnelRegistApp (AndroidManifest, DBManager, MainActivity, PersonnelDetail, PersonnelInfo, PersonnelList, PersonnelReg)

서윤-정 2024. 6. 8. 15:30

[AndroidManifest]

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ysb_dbpersonnelresistapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.YSB_DBpersonnelResistApp">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.YSB_DBpersonnelResistApp.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".PersonnelReg"
            android:theme="@style/Theme.YSB_DBpersonnelResistApp.NoActionBar"
            android:screenOrientation="portrait"
            android:label="인물 등록"></activity>

        <activity android:name=".PersonnelInfo"
            android:theme="@style/Theme.YSB_DBpersonnelResistApp.NoActionBar"
            android:screenOrientation="portrait"
            android:label="인물 정보"></activity>

        <activity android:name=".PersonnelList"
            android:theme="@style/Theme.YSB_DBpersonnelResistApp.NoActionBar"
            android:screenOrientation="portrait"
            android:label="인물 조회"></activity>


        <activity android:name=".PersonnelDetail"
            android:theme="@style/Theme.YSB_DBpersonnelResistApp.NoActionBar"
            android:screenOrientation="portrait"
            android:label="인물 상세 조회"></activity>
    </application>

</manifest>

 

 

 

 

 

 

 

 

 

 

 

[DBManager]

package com.example.ysb_dbpersonnelresistapp;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBManager extends SQLiteOpenHelper {
    public DBManager(Context context) {
        super(context,"PersonnelDB",null,1);
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL("create table Personnel(" +
                "name text,"+
                "studentid text," +
                "grade text,"+
                "phoneno text,"+
                "hobby text,"+
                "area text,"+
                "photo text)" );

    }//onCreate

    @Override
    public void onUpgrade(SQLiteDatabase db,int i,int i1){

    }


}//class

 

 

 

 

 

 

 


 

 

 

 

 

 

[MainActivity]

package com.example.ysb_dbpersonnelresistapp;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;
//import androidx.navigation.ui.*;

import com.example.ysb_dbpersonnelresistapp.databinding.ActivityMainBinding;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {

    //private AppBarConfiguration appBarConfiguration;
    private ActivityMainBinding binding;

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

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings2) {
            // 인물등록 액티비티 전환
            Intent it = new Intent(this,PersonnelReg.class);
            startActivity(it);
            finish();

            return true;
        }else if (id == R.id.action_settings4) {
            // 인물조회 액티비티 전환
            Intent it = new Intent(this,PersonnelList.class);
            startActivity(it);
            finish();

            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

 

 

 

클래스 정의

public class MainActivity extends AppCompatActivity {
    // private AppBarConfiguration appBarConfiguration;
    private ActivityMainBinding binding;

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

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);
    }

 

 

  • MainActivity는 AppCompatActivity를 확장하여 이 클래스가 AppCompatActivity가 제공하는 기능을 활용할 수 있게 합니다.
  • binding은 ActivityMainBinding의 인스턴스로, View Binding을 사용합니다. 이는 findViewById 호출을 피하고, 뷰 접근에 대한 타입 안전성을 제공합니다.
  • onCreate는 액티비티가 생성될 때 초기 설정을 수행하는 재정의된 메소드입니다. 여기서:
    1. super.onCreate를 호출하여 상위 클래스의 onCreate 메소드가 실행되도록 합니다.
    2. activity_main 레이아웃을 콘텐츠 뷰로 설정합니다.
    3. 레이아웃 인플레이터를 사용하여 binding을 초기화합니다.
    4. binding의 루트 뷰를 콘텐츠 뷰로 설정합니다.
    5. 툴바를 앱의 액션바로 설정합니다.

 

 

 

 

 

 

 

메뉴 생성

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 

onCreateOptionsMenu는 res/menu/menu_main.xml에 정의된 메뉴 레이아웃을 인플레이트하여 앱의 액션바에 추가합니다.

 

 

 

 

메뉴 항목 선택 처리

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings2) {
            Intent it = new Intent(this, PersonnelReg.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings4) {
            Intent it = new Intent(this, PersonnelList.class);
            startActivity(it);
            finish();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

 

 

  • onOptionsItemSelected는 메뉴 항목 클릭을 처리하기 위해 재정의됩니다.
  • 클릭된 항목의 ID를 가져옵니다.
  • ID가 R.id.action_settings2와 일치하면, PersonnelReg 액티비티를 시작하기 위해 Intent를 생성하고 현재 액티비티를 종료합니다.
  • ID가 R.id.action_settings4와 일치하면, PersonnelList 액티비티를 시작하기 위해 Intent를 생성하고 현재 액티비티를 종료합니다.
  • 어느 ID와도 일치하지 않으면, 상위 클래스의 onOptionsItemSelected 메소드를 호출합니다.

 

이 MainActivity 클래스는 툴바와 메뉴를 갖춘 Android 액티비티를 설정합니다. 메뉴 항목이 선택되면, 인텐트를 사용하여 다른 액티비티(PersonnelReg와 PersonnelList)로 이동합니다. View Binding을 사용하여 findViewById를 호출하지 않고도 뷰에 직접 접근할 수 있어 코드가 더 깔끔하고 안전해집니다.

 
 

 

 

 

 

 

 


 

 

 

 

 

 

[PersonnelInfo]

package com.example.ysb_dbpersonnelresistapp;

import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

//import com.example.b_personnelregistapp.databinding.ActivityPersonnelinfoBinding;
import com.example.ysb_dbpersonnelresistapp.databinding.ActivityPersonnelinfoBinding;

public class PersonnelInfo extends AppCompatActivity {
     DBManager dbManager;
     SQLiteDatabase sqLitedb;
    //private AppBarConfiguration appBarConfiguration;
    private ActivityPersonnelinfoBinding binding;

    TextView tv_name,tv_studentid,tv_studentgrade;
    TextView tv_phoneno,tv_hobby,tv_area;
    ImageView img_photo;

    String str_name,str_studentid,str_phoneno,str_studentgrade;
    String str_hobby;
    String str_area;
    String str_photouri;
    Uri photouri;

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

        binding = ActivityPersonnelinfoBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        tv_name=(TextView) findViewById(R.id.name);
        tv_studentid=(TextView) findViewById(R.id.studentid);
        tv_studentgrade = (TextView) findViewById(R.id.studentgrade);
        tv_phoneno= (TextView) findViewById(R.id.phoneno);
        tv_hobby=(TextView) findViewById(R.id.hobby);
        tv_area=(TextView) findViewById(R.id.area);
        img_photo=(ImageView) findViewById(R.id.photo);

        Intent iit = getIntent();
        str_name = iit.getStringExtra("it_name");
        str_studentid= iit.getStringExtra("it_studentid");
        str_phoneno=iit.getStringExtra("it_phoneno");
        str_studentgrade=iit.getStringExtra("it_studentgrade");
        str_hobby=iit.getStringExtra("it_hobby");
        str_area =iit.getStringExtra("it_area");
        str_photouri=iit.getStringExtra("it_photouri");

        tv_name.setText(str_name);
        tv_studentid.setText(str_studentid);
        tv_studentgrade.setText(str_studentgrade);
        tv_phoneno.setText(str_phoneno);
        tv_hobby.setText(str_hobby);
        tv_area.setText(str_area);

        photouri= Uri.parse(str_photouri);
        img_photo.setImageURI(photouri);

    }//onCreate

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_personnelinfo, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings2) {
            // 인물등록 액티비티 전환
            Intent it = new Intent(this,PersonnelReg.class);
            startActivity(it);
            finish();
            return true;
        } else if(id == R.id.action_settings1){
            //홈
            Intent it = new Intent(this,MainActivity.class);
            startActivity(it);
            finish();
            return true;
        }else if(id == R.id.action_settings4){
            //조회
            Intent it = new Intent(this,PersonnelList.class);
            startActivity(it);
            finish();
            return true;
        }else if(id == R.id.action_settings5){
            //삭제
            try{
                dbManager = new DBManager(this);
                sqLitedb = dbManager.getWritableDatabase();
                sqLitedb.delete("Personnel", "name=?", new String[]{str_name});
                sqLitedb.close();
                dbManager.close();

            }catch (SQLiteException e){
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
            }
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

 

 

 

클래스 정의

public class PersonnelInfo extends AppCompatActivity {
    DBManager dbManager;
    SQLiteDatabase sqLitedb;
    private ActivityPersonnelinfoBinding binding;

    TextView tv_name, tv_studentid, tv_studentgrade;
    TextView tv_phoneno, tv_hobby, tv_area;
    ImageView img_photo;

    String str_name, str_studentid, str_phoneno, str_studentgrade;
    String str_hobby;
    String str_area;
    String str_photouri;
    Uri photouri;

 

 

  • PersonnelInfo 클래스는 AppCompatActivity를 확장하여 이 클래스가 AppCompatActivity가 제공하는 기능을 활용할 수 있게 합니다.
  • 데이터베이스를 관리하기 위한 DBManager와 SQLiteDatabase 객체를 선언합니다.
  • binding은 ActivityPersonnelinfoBinding의 인스턴스로, View Binding을 사용하여 뷰를 참조합니다.
  • 여러 TextView와 ImageView를 선언하여 인물 정보를 표시합니다.
  • 인물 정보와 관련된 문자열 변수들을 선언합니다.

 

 

 

 

onCreate 메소드

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

        binding = ActivityPersonnelinfoBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        tv_name = findViewById(R.id.name);
        tv_studentid = findViewById(R.id.studentid);
        tv_studentgrade = findViewById(R.id.studentgrade);
        tv_phoneno = findViewById(R.id.phoneno);
        tv_hobby = findViewById(R.id.hobby);
        tv_area = findViewById(R.id.area);
        img_photo = findViewById(R.id.photo);

        Intent iit = getIntent();
        str_name = iit.getStringExtra("it_name");
        str_studentid = iit.getStringExtra("it_studentid");
        str_phoneno = iit.getStringExtra("it_phoneno");
        str_studentgrade = iit.getStringExtra("it_studentgrade");
        str_hobby = iit.getStringExtra("it_hobby");
        str_area = iit.getStringExtra("it_area");
        str_photouri = iit.getStringExtra("it_photouri");

        tv_name.setText(str_name);
        tv_studentid.setText(str_studentid);
        tv_studentgrade.setText(str_studentgrade);
        tv_phoneno.setText(str_phoneno);
        tv_hobby.setText(str_hobby);
        tv_area.setText(str_area);

        photouri = Uri.parse(str_photouri);
        img_photo.setImageURI(photouri);
    }

 

 

 

 

  • onCreate 메소드에서 UI 요소들을 초기화하고 설정합니다.
  • Intent로부터 전달된 인물 정보를 가져와 각 TextView에 설정하고, 이미지 URI를 ImageView에 설정합니다.

 

 

 

 

 

 

메뉴 생성 및 항목 선택 처리

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_personnelinfo, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings2) {
            Intent it = new Intent(this, PersonnelReg.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings1) {
            Intent it = new Intent(this, MainActivity.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings4) {
            Intent it = new Intent(this, PersonnelList.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings5) {
            try {
                dbManager = new DBManager(this);
                sqLitedb = dbManager.getWritableDatabase();
                sqLitedb.delete("Personnel", "name=?", new String[]{str_name});
                sqLitedb.close();
                dbManager.close();
                Toast.makeText(this, "삭제 완료", Toast.LENGTH_SHORT).show();
            } catch (SQLiteException e) {
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
            }
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

 

 

 

  • onCreateOptionsMenu 메소드는 메뉴를 인플레이트하여 액션바에 추가합니다.
  • onOptionsItemSelected 메소드는 메뉴 항목 클릭을 처리하여, 각각의 항목에 따라 다른 액티비티로 전환하거나 데이터를 삭제합니다:
    • action_settings2: PersonnelReg 액티비티로 전환.
    • action_settings1: MainActivity 액티비티로 전환.
    • action_settings4: PersonnelList 액티비티로 전환.
    • action_settings5: 데이터베이스에서 인물 정보를 삭제.

 

 

이 PersonnelInfo 클래스는 인물의 정보를 표시하고, 다른 활동으로 이동하거나 데이터베이스에서 인물 정보를 삭제하는 기능을 제공합니다. Intent로부터 전달된 인물 정보를 표시하고, 메뉴 항목을 통해 다른 액티비티로 전환하거나 데이터를 삭제하는 기능을 포함하고 있습니다. View Binding을 사용하여 UI 요소를 초기화하고, 데이터베이스 작업을 수행하여 데이터를 관리합니다.

 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

[PersonnelReg]

package com.example.ysb_dbpersonnelresistapp;

import android.content.ContentValues;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.ysb_dbpersonnelresistapp.databinding.ActivityMainBinding;
import com.example.ysb_dbpersonnelresistapp.databinding.ActivityPersonnelregBinding;

import java.net.URI;

public class PersonnelReg extends AppCompatActivity {

    DBManager dbManager;
    SQLiteDatabase sqLitedb;

    //private AppBarConfiguration appBarConfiguration;
    private ActivityPersonnelregBinding binding;

    public  final static int REQUEST_PHOTO_CODE=1;

    EditText name,studentid,phoneno;
    RadioGroup studentgrade;
    RadioButton one,two,three;
    CheckBox hobby01,hobby02,hobby03;
    ImageView findphoto;
    Button register;
    Spinner area;
    String[] str_area={"서울","인천","안양","수원","성남"};
    String str_name,str_studentid,str_phoneno,str_studentgrade;
    String str_hobby;
    String str_areaitem;
    Uri photouri;
    String str_photouri;

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

        binding = ActivityPersonnelregBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        name=(EditText) findViewById(R.id.name);
        studentid=(EditText) findViewById(R.id.studentid);
        phoneno=(EditText) findViewById(R.id.phoneno);
        studentgrade=(RadioGroup) findViewById(R.id.studentgrade);
        one=(RadioButton)findViewById(R.id.one);
        two=(RadioButton)findViewById(R.id.two);
        three=(RadioButton)findViewById(R.id.three);
        hobby01=(CheckBox) findViewById(R.id.hobby01);
        hobby02=(CheckBox) findViewById(R.id.hobby02);
        hobby03=(CheckBox) findViewById(R.id.hobby03);
        findphoto=(ImageView)findViewById(R.id.photo) ;
        register=(Button) findViewById(R.id.register);

        area = (Spinner) findViewById(R.id.area);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>
                (this, android.R.layout.simple_spinner_item,
                        str_area);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        area.setAdapter(adapter);

        area.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                str_areaitem=str_area[i];
                // Toast.makeText(getApplicationContext(),str_areaitem,Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                Toast.makeText(getApplicationContext(),"거주지를 선택하세요",Toast.LENGTH_SHORT).show();
            }
        });

        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                str_name=name.getText().toString();
                str_studentid= studentid.getText().toString();
                str_phoneno=phoneno.getText().toString();
                if(one.isChecked())
                    str_studentgrade=one.getText().toString();
                else if(two.isChecked())
                    str_studentgrade=two.getText().toString();
                else
                    str_studentgrade=three.getText().toString();

                str_hobby="";
                if(hobby01.isChecked())
                    str_hobby = str_hobby +hobby01.getText().toString();
                if(hobby02.isChecked())
                    str_hobby = str_hobby +hobby02.getText().toString();
                if(hobby03.isChecked())
                    str_hobby = str_hobby +hobby03.getText().toString();

                str_photouri = photouri.toString();

                try{
                    dbManager = new DBManager(PersonnelReg.this);
                    sqLitedb=dbManager.getWritableDatabase();

                    ContentValues values = new ContentValues();
                    values.put("name",str_name);
                    values.put("studentid",str_studentid);
                    values.put("grade",str_studentgrade);
                    values.put("phoneno",str_phoneno);
                    values.put("hobby",str_hobby);
                    values.put("area",str_areaitem);
                    values.put("photo",str_photouri);

                    long newRowId = sqLitedb.insert("Personnel",null,values);
                    sqLitedb.close();
                    dbManager.close();
                   // Toast.makeText(PersonnelReg.this,"성공ㄴㅇ",Toast.LENGTH_SHORT).show();
                }catch(SQLException e){
                  Toast.makeText(PersonnelReg.this,e.getMessage(),Toast.LENGTH_SHORT).show();
                }

                Intent iit = new Intent(PersonnelReg.this,PersonnelInfo.class);
                iit.putExtra("it_name",str_name);
                iit.putExtra("it_studentid",str_studentid);
                iit.putExtra("it_studentgrade",str_studentgrade);
                iit.putExtra("it_phoneno",str_phoneno);
                iit.putExtra("it_hobby",str_hobby);
                iit.putExtra("it_area",str_areaitem);
                iit.putExtra("it_photouri",photouri.toString());
                startActivity(iit);

            }
        });//등록완료버튼




    }//oncreate

    public  void findPhoto(View view){
        Intent it = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        it.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(it,REQUEST_PHOTO_CODE);

    }//findPhoto

    public void onActivityResult(int requestcode, int resultcode,Intent it){
        super.onActivityResult(requestcode,resultcode,it);
        if(requestcode==REQUEST_PHOTO_CODE){
            if(resultcode==RESULT_OK){
                photouri=it.getData();
                findphoto.setImageURI(photouri);
            }
        }
        else{
            Toast.makeText(getApplicationContext(),"사진선택오류",Toast.LENGTH_SHORT).show();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_personnelreg, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings1) {
            // 홈 액티비티 전환
            Intent it = new Intent(this,MainActivity.class);
            startActivity(it);
            finish();


            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

 

 

 

 

 

클래스 정의

public class PersonnelReg extends AppCompatActivity {

    DBManager dbManager;
    SQLiteDatabase sqLitedb;
    private ActivityPersonnelregBinding binding;

    public final static int REQUEST_PHOTO_CODE = 1;

    EditText name, studentid, phoneno;
    RadioGroup studentgrade;
    RadioButton one, two, three;
    CheckBox hobby01, hobby02, hobby03;
    ImageView findphoto;
    Button register;
    Spinner area;
    String[] str_area = {"서울", "인천", "안양", "수원", "성남"};
    String str_name, str_studentid, str_phoneno, str_studentgrade;
    String str_hobby;
    String str_areaitem;
    Uri photouri;
    String str_photouri;

 

 

 

  • PersonnelReg 클래스는 AppCompatActivity를 확장하여 이 클래스가 AppCompatActivity가 제공하는 기능을 활용할 수 있게 합니다.
  • 데이터베이스를 관리하기 위한 DBManager와 SQLiteDatabase 객체를 선언합니다.
  • binding은 ActivityPersonnelregBinding의 인스턴스로, View Binding을 사용하여 뷰를 참조합니다.
  • 사진 선택을 위한 요청 코드 REQUEST_PHOTO_CODE를 정의합니다.
  • 여러 UI 요소를 선언합니다: EditText, RadioGroup, RadioButton, CheckBox, ImageView, Button, Spinner 등.

 

 

 

 

 

onCreate 메소드

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

        binding = ActivityPersonnelregBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        name = findViewById(R.id.name);
        studentid = findViewById(R.id.studentid);
        phoneno = findViewById(R.id.phoneno);
        studentgrade = findViewById(R.id.studentgrade);
        one = findViewById(R.id.one);
        two = findViewById(R.id.two);
        three = findViewById(R.id.three);
        hobby01 = findViewById(R.id.hobby01);
        hobby02 = findViewById(R.id.hobby02);
        hobby03 = findViewById(R.id.hobby03);
        findphoto = findViewById(R.id.photo);
        register = findViewById(R.id.register);
        area = findViewById(R.id.area);

        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, str_area);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        area.setAdapter(adapter);

        area.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                str_areaitem = str_area[i];
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                Toast.makeText(getApplicationContext(), "거주지를 선택하세요", Toast.LENGTH_SHORT).show();
            }
        });

        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                str_name = name.getText().toString();
                str_studentid = studentid.getText().toString();
                str_phoneno = phoneno.getText().toString();

                if (one.isChecked()) {
                    str_studentgrade = one.getText().toString();
                } else if (two.isChecked()) {
                    str_studentgrade = two.getText().toString();
                } else {
                    str_studentgrade = three.getText().toString();
                }

                str_hobby = "";
                if (hobby01.isChecked()) {
                    str_hobby = str_hobby + hobby01.getText().toString();
                }
                if (hobby02.isChecked()) {
                    str_hobby = str_hobby + hobby02.getText().toString();
                }
                if (hobby03.isChecked()) {
                    str_hobby = str_hobby + hobby03.getText().toString();
                }

                str_photouri = photouri.toString();

                try {
                    dbManager = new DBManager(PersonnelReg.this);
                    sqLitedb = dbManager.getWritableDatabase();

                    ContentValues values = new ContentValues();
                    values.put("name", str_name);
                    values.put("studentid", str_studentid);
                    values.put("grade", str_studentgrade);
                    values.put("phoneno", str_phoneno);
                    values.put("hobby", str_hobby);
                    values.put("area", str_areaitem);
                    values.put("photo", str_photouri);

                    long newRowId = sqLitedb.insert("Personnel", null, values);
                    sqLitedb.close();
                    dbManager.close();
                } catch (SQLException e) {
                    Toast.makeText(PersonnelReg.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }

                Intent iit = new Intent(PersonnelReg.this, PersonnelInfo.class);
                iit.putExtra("it_name", str_name);
                iit.putExtra("it_studentid", str_studentid);
                iit.putExtra("it_studentgrade", str_studentgrade);
                iit.putExtra("it_phoneno", str_phoneno);
                iit.putExtra("it_hobby", str_hobby);
                iit.putExtra("it_area", str_areaitem);
                iit.putExtra("it_photouri", photouri.toString());
                startActivity(iit);
            }
        });
    }

 

 

 

  • onCreate 메소드에서 UI 요소들을 초기화하고 설정합니다.
  • ArrayAdapter를 사용하여 스피너에 지역 데이터를 설정합니다.
  • 스피너의 항목 선택 이벤트를 처리하여 선택된 항목을 str_areaitem에 저장합니다.
  • 등록 버튼 클릭 이벤트를 처리하여 입력된 데이터를 가져오고 데이터베이스에 저장합니다.
  • 입력된 데이터를 Intent를 사용하여 PersonnelInfo 액티비티로 전달하고, 해당 액티비티를 시작합니다.

 

 

 

 

 

사진 선택 메소드

    public void findPhoto(View view) {
        Intent it = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        it.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(it, REQUEST_PHOTO_CODE);
    }
 
 

사진 선택을 위해 Intent를 생성하고, startActivityForResult를 사용하여 사진 선택 액티비티를 시작합니다.

 

 

 

 

 

 

onActivityResult 메소드

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_PHOTO_CODE) {
            if (resultCode == RESULT_OK) {
                photouri = data.getData();
                findphoto.setImageURI(photouri);
            }
        } else {
            Toast.makeText(getApplicationContext(), "사진선택오류", Toast.LENGTH_SHORT).show();
        }
    }

 

사진 선택 액티비티의 결과를 처리하여 선택된 사진의 URI를 photouri에 저장하고, ImageView에 표시합니다.

 

 

 

 

메뉴 생성 및 항목 선택 처리

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_personnelreg, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings1) {
            Intent it = new Intent(this, MainActivity.class);
            startActivity(it);
            finish();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
 
 

 

  • onCreateOptionsMenu 메소드는 메뉴를 인플레이트하여 액션바에 추가합니다.
  • onOptionsItemSelected 메소드는 메뉴 항목 클릭을 처리하여, 홈 액티비티로 전환합니다.

 

 

이 PersonnelReg 클래스는 사용자가 인물 정보를 입력하고 사진을 선택하며, 입력된 정보를 데이터베이스에 저장하고 다른 액티비티로 전환하는 기능을 제공합니다. View Binding을 사용하여 UI 요소를 초기화하고, Spinner와 RadioGroup 등을 사용하여 입력 폼을 구성합니다. 사진 선택 기능과 데이터베이스 저장 기능을 포함하고 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

[PersonnelList]

package com.example.ysb_dbpersonnelresistapp;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.ysb_dbpersonnelresistapp.databinding.ActivityMainBinding;
import com.example.ysb_dbpersonnelresistapp.databinding.ActivityPersonnellistBinding;

public class PersonnelList extends AppCompatActivity {
    DBManager dbManager;
    SQLiteDatabase sqLitedb;
    //private AppBarConfiguration appBarConfiguration;
    private ActivityPersonnellistBinding binding;
    String str_name,str_studentid,str_phoneno,str_studentgrade;
    String str_hobby;
    String str_area;
    LinearLayout personlist;
  //  Uri photouri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_personnellist);

        binding = ActivityPersonnellistBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        personlist=(LinearLayout) findViewById(R.id.personlist);


        try{
           dbManager = new DBManager(this);
           sqLitedb = dbManager.getReadableDatabase();
            Cursor cursor=sqLitedb.query("Personnel",null,null,null,null,null,null);

            int i=0;
            while(cursor.moveToNext()){
                str_name=cursor.getString(cursor.getColumnIndex("name"));
                str_studentid = cursor.getString(cursor.getColumnIndex("studentid"));
                str_phoneno = cursor.getString(cursor.getColumnIndex("phoneno"));
                str_studentgrade = cursor.getString(cursor.getColumnIndex("grade"));
                str_hobby = cursor.getString(cursor.getColumnIndex("hobby"));
                str_area = cursor.getString(cursor.getColumnIndex("area"));



                LinearLayout layout = new LinearLayout(this);
                layout.setOrientation(LinearLayout.VERTICAL);
                layout.setPadding(20,10,20,10);
                layout.setId(i);
                layout.setTag(str_name);

                //이름
                TextView tv_name=new TextView(this);
                tv_name.setText(str_name);
                tv_name.setTextSize(30);
                tv_name.setBackgroundColor(Color.argb(50,0,255,0));
                layout.addView(tv_name);

                TextView tv_studentid = new TextView(this);
                tv_studentid.setTextSize(20);
                tv_studentid.setText("학번: " + str_studentid);
                layout.addView(tv_studentid);

                // 학년
                TextView tv_grade = new TextView(this);
                tv_grade.setTextSize(20);
                tv_grade.setText("학년: " + str_studentgrade);
                layout.addView(tv_grade);

                // 전화번호
                TextView tv_phoneno = new TextView(this);
                tv_phoneno.setTextSize(20);
                tv_phoneno.setText("전화번호: " + str_phoneno);
                layout.addView(tv_phoneno);



                personlist.addView(layout);
                i++;


                tv_name.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View view){
                        Intent it = new Intent(PersonnelList.this, PersonnelDetail.class);
                        it.putExtra("it_name", tv_name.getText().toString());
                        startActivity(it);
                    }
                });


            }//while


        }catch(SQLiteException e){
            Toast.makeText(PersonnelList.this,e.getMessage(),Toast.LENGTH_SHORT).show();
        }

        dbManager.close();
        sqLitedb.close();

    }//onCreate

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings2) {
            // 인물등록 액티비티 전환
            Intent it = new Intent(this,PersonnelReg.class);
            startActivity(it);
            finish();

            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

 

 

 

클래스 정의

public class PersonnelList extends AppCompatActivity {
    DBManager dbManager;
    SQLiteDatabase sqLitedb;
    private ActivityPersonnellistBinding binding;
    String str_name, str_studentid, str_phoneno, str_studentgrade;
    String str_hobby;
    String str_area;
    LinearLayout personlist;

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

        binding = ActivityPersonnellistBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        personlist = findViewById(R.id.personlist);

 

 

  • PersonnelList 클래스는 AppCompatActivity를 확장하여 이 클래스가 AppCompatActivity가 제공하는 기능을 활용할 수 있게 합니다.
  • 데이터베이스를 관리하기 위한 DBManager와 SQLiteDatabase 객체를 선언합니다.
  • binding은 ActivityPersonnellistBinding의 인스턴스로, View Binding을 사용하여 뷰를 참조합니다.
  • LinearLayout 객체를 선언하여 인물 리스트를 표시합니다.

 

 

 

 

 

 

데이터베이스에서 데이터 가져오기

        try {
            dbManager = new DBManager(this);
            sqLitedb = dbManager.getReadableDatabase();
            Cursor cursor = sqLitedb.query("Personnel", null, null, null, null, null, null);

            int i = 0;
            while (cursor.moveToNext()) {
                str_name = cursor.getString(cursor.getColumnIndex("name"));
                str_studentid = cursor.getString(cursor.getColumnIndex("studentid"));
                str_phoneno = cursor.getString(cursor.getColumnIndex("phoneno"));
                str_studentgrade = cursor.getString(cursor.getColumnIndex("grade"));
                str_hobby = cursor.getString(cursor.getColumnIndex("hobby"));
                str_area = cursor.getString(cursor.getColumnIndex("area"));

                LinearLayout layout = new LinearLayout(this);
                layout.setOrientation(LinearLayout.VERTICAL);
                layout.setPadding(20, 10, 20, 10);
                layout.setId(i);
                layout.setTag(str_name);

                TextView tv_name = new TextView(this);
                tv_name.setText(str_name);
                tv_name.setTextSize(30);
                tv_name.setBackgroundColor(Color.argb(50, 0, 255, 0));
                layout.addView(tv_name);

                TextView tv_studentid = new TextView(this);
                tv_studentid.setTextSize(20);
                tv_studentid.setText("학번: " + str_studentid);
                layout.addView(tv_studentid);

                TextView tv_grade = new TextView(this);
                tv_grade.setTextSize(20);
                tv_grade.setText("학년: " + str_studentgrade);
                layout.addView(tv_grade);

                TextView tv_phoneno = new TextView(this);
                tv_phoneno.setTextSize(20);
                tv_phoneno.setText("전화번호: " + str_phoneno);
                layout.addView(tv_phoneno);

                personlist.addView(layout);
                i++;

                tv_name.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent it = new Intent(PersonnelList.this, PersonnelDetail.class);
                        it.putExtra("it_name", tv_name.getText().toString());
                        startActivity(it);
                    }
                });
            }

        } catch (SQLiteException e) {
            Toast.makeText(PersonnelList.this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }

        dbManager.close();
        sqLitedb.close();
    }

 

 

  • 데이터베이스에서 데이터를 가져오기 위해 DBManager와 SQLiteDatabase 객체를 초기화합니다.
  • Cursor 객체를 사용하여 Personnel 테이블에서 데이터를 조회합니다.
  • 조회된 데이터를 반복문을 통해 읽어와 각 인물 정보를 LinearLayout에 추가합니다.
  • 각 레이아웃에 클릭 리스너를 설정하여 클릭 시 PersonnelDetail 액티비티로 전환합니다.

 

 

 

 

 

 

 

 

 

메뉴 생성 및 항목 선택 처리

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings2) {
            Intent it = new Intent(this, PersonnelReg.class);
            startActivity(it);
            finish();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
 

 

 

 

  • onCreateOptionsMenu 메소드는 메뉴를 인플레이트하여 액션바에 추가합니다.
  • onOptionsItemSelected 메소드는 메뉴 항목 클릭을 처리하여 PersonnelReg 액티비티로 전환합니다.

 

이 PersonnelList 클래스는 데이터베이스에서 인물 정보를 읽어와 화면에 리스트 형태로 표시하고, 리스트 항목을 클릭하면 인물의 세부 정보를 보여주는 PersonnelDetail 액티비티로 전환하는 기능을 제공합니다. 데이터베이스에서 조회한 인물 정보를 LinearLayout에 동적으로 추가하고, 클릭 이벤트를 설정하여 다른 액티비티로 전환합니다. 메뉴 항목을 통해 인물 등록 액티비티로 이동할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

[PersonnelDetail]

package com.example.ysb_dbpersonnelresistapp;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.ysb_dbpersonnelresistapp.databinding.ActivityPersonneldetailBinding;
import com.example.ysb_dbpersonnelresistapp.databinding.ActivityPersonnelinfoBinding;

public class PersonnelDetail extends AppCompatActivity {
     DBManager dbManager;
     SQLiteDatabase sqLitedb;
    //private AppBarConfiguration appBarConfiguration;
    private ActivityPersonneldetailBinding binding;

    TextView tv_name,tv_studentid,tv_studentgrade;
    TextView tv_phoneno,tv_hobby,tv_area;
    ImageView img_photo;

    String str_name,str_studentid,str_phoneno,str_studentgrade;
    String str_hobby;
    String str_area;
    String str_photouri;
    Uri photouri;

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

        binding = ActivityPersonneldetailBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);



        tv_name=(TextView) findViewById(R.id.name);
        tv_studentid=(TextView) findViewById(R.id.studentid);
        tv_studentgrade = (TextView) findViewById(R.id.studentgrade);
        tv_phoneno= (TextView) findViewById(R.id.phoneno);
        tv_hobby=(TextView) findViewById(R.id.hobby);
        tv_area=(TextView) findViewById(R.id.area);
        img_photo=(ImageView) findViewById(R.id.photo);

        Intent iit = getIntent();
        str_name = iit.getStringExtra("it_name");
        try{
            dbManager = new DBManager(this);
            sqLitedb = dbManager.getReadableDatabase();
            Cursor cursor = sqLitedb.rawQuery("select * from Personnel where name=?", new String[]{str_name}, null);

            if(cursor != null && cursor.moveToNext()){

                str_studentid= cursor.getString(cursor.getColumnIndex("studentid"));
                str_phoneno=cursor.getString(cursor.getColumnIndex("phoneno"));
                str_studentgrade=cursor.getString(cursor.getColumnIndex("grade"));
                str_hobby=cursor.getString(cursor.getColumnIndex("hobby"));
                str_area =cursor.getString(cursor.getColumnIndex("area"));
                str_photouri=cursor.getString(cursor.getColumnIndex("photo"));


                // 로그로 데이터 확인
                Log.d("PersonnelDetail", "Student ID: " + str_studentid);
                Log.d("PersonnelDetail", "Phone No: " + str_phoneno);
                Log.d("PersonnelDetail", "Grade: " + str_studentgrade);
                Log.d("PersonnelDetail", "Hobby: " + str_hobby);
                Log.d("PersonnelDetail", "Area: " + str_area);
                Log.d("PersonnelDetail", "Photo URI: " + str_photouri);

                cursor.close();
                sqLitedb.close();
                dbManager.close();

            }// if

        }catch (SQLiteException e){
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        }



        tv_name.setText(str_name);
        tv_studentid.setText(str_studentid);
        tv_studentgrade.setText(str_studentgrade);
        tv_phoneno.setText(str_phoneno);
        tv_hobby.setText(str_hobby);
        tv_area.setText(str_area);

        photouri= Uri.parse(str_photouri);
        img_photo.setImageURI(photouri);

    }//onCreate

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_personnelinfo, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings2) {
            // 인물등록 액티비티 전환
            Intent it = new Intent(this,PersonnelReg.class);
            startActivity(it);
            finish();
            return true;
        } else if(id == R.id.action_settings1){
            //홈
            Intent it = new Intent(this,MainActivity.class);
            startActivity(it);
            finish();
            return true;
        }else if(id == R.id.action_settings4){
            //조회
            Intent it = new Intent(this,PersonnelList.class);
            startActivity(it);
            finish();
            return true;
        }else if(id == R.id.action_settings5){
            //삭제
            try{
                dbManager = new DBManager(this);
                sqLitedb = dbManager.getWritableDatabase();
                sqLitedb.delete("Personnel", "name=?", new String[]{str_name});
                sqLitedb.close();
                dbManager.close();

            }catch (SQLiteException e){
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
            }
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

 

 

 

클래스 정의

public class PersonnelDetail extends AppCompatActivity {
    DBManager dbManager;
    SQLiteDatabase sqLitedb;
    private ActivityPersonneldetailBinding binding;

    TextView tv_name, tv_studentid, tv_studentgrade;
    TextView tv_phoneno, tv_hobby, tv_area;
    ImageView img_photo;

    String str_name, str_studentid, str_phoneno, str_studentgrade;
    String str_hobby;
    String str_area;
    String str_photouri;
    Uri photouri;

 

 

  • PersonnelDetail 클래스는 AppCompatActivity를 확장하여 이 클래스가 AppCompatActivity가 제공하는 기능을 활용할 수 있게 합니다.
  • 데이터베이스를 관리하기 위한 DBManager와 SQLiteDatabase 객체를 선언합니다.
  • binding은 ActivityPersonneldetailBinding의 인스턴스로, View Binding을 사용하여 뷰를 참조합니다.
  • 여러 TextView와 ImageView를 선언하여 인물 정보를 표시합니다.
  • 인물 정보와 관련된 문자열 변수들을 선언합니다.

 

 

 

 

 

 

 

onCreate 메소드

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

        binding = ActivityPersonneldetailBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        tv_name = findViewById(R.id.name);
        tv_studentid = findViewById(R.id.studentid);
        tv_studentgrade = findViewById(R.id.studentgrade);
        tv_phoneno = findViewById(R.id.phoneno);
        tv_hobby = findViewById(R.id.hobby);
        tv_area = findViewById(R.id.area);
        img_photo = findViewById(R.id.photo);

        Intent iit = getIntent();
        str_name = iit.getStringExtra("it_name");
        try {
            dbManager = new DBManager(this);
            sqLitedb = dbManager.getReadableDatabase();
            Cursor cursor = sqLitedb.rawQuery("select * from Personnel where name=?", new String[]{str_name}, null);

            if (cursor != null && cursor.moveToNext()) {
                str_studentid = cursor.getString(cursor.getColumnIndex("studentid"));
                str_phoneno = cursor.getString(cursor.getColumnIndex("phoneno"));
                str_studentgrade = cursor.getString(cursor.getColumnIndex("grade"));
                str_hobby = cursor.getString(cursor.getColumnIndex("hobby"));
                str_area = cursor.getString(cursor.getColumnIndex("area"));
                str_photouri = cursor.getString(cursor.getColumnIndex("photo"));

                // 로그로 데이터 확인
                Log.d("PersonnelDetail", "Student ID: " + str_studentid);
                Log.d("PersonnelDetail", "Phone No: " + str_phoneno);
                Log.d("PersonnelDetail", "Grade: " + str_studentgrade);
                Log.d("PersonnelDetail", "Hobby: " + str_hobby);
                Log.d("PersonnelDetail", "Area: " + str_area);
                Log.d("PersonnelDetail", "Photo URI: " + str_photouri);

                cursor.close();
                sqLitedb.close();
                dbManager.close();
            }
        } catch (SQLiteException e) {
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        }

        tv_name.setText(str_name);
        tv_studentid.setText(str_studentid);
        tv_studentgrade.setText(str_studentgrade);
        tv_phoneno.setText(str_phoneno);
        tv_hobby.setText(str_hobby);
        tv_area.setText(str_area);

        photouri = Uri.parse(str_photouri);
        img_photo.setImageURI(photouri);
    }

 

 

 

 

  • onCreate 메소드에서 UI 요소들을 초기화하고 설정합니다.
  • Intent로부터 전달된 인물 이름(str_name)을 사용하여 데이터베이스에서 해당 인물의 정보를 조회합니다.
  • 조회된 데이터를 각 TextView에 설정하고, 이미지 URI를 ImageView에 설정합니다.
  • 로그를 사용하여 조회된 데이터를 확인합니다.

 

 

 

 

 

 

 

 

 

메뉴 생성 및 항목 선택 처리

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_personnelinfo, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings2) {
            Intent it = new Intent(this, PersonnelReg.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings1) {
            Intent it = new Intent(this, MainActivity.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings4) {
            Intent it = new Intent(this, PersonnelList.class);
            startActivity(it);
            finish();
            return true;
        } else if (id == R.id.action_settings5) {
            try {
                dbManager = new DBManager(this);
                sqLitedb = dbManager.getWritableDatabase();
                sqLitedb.delete("Personnel", "name=?", new String[]{str_name});
                sqLitedb.close();
                dbManager.close();
                Toast.makeText(this, "삭제 완료", Toast.LENGTH_SHORT).show();
            } catch (SQLiteException e) {
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
            }
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

 

 

 

  • onCreateOptionsMenu 메소드는 메뉴를 인플레이트하여 액션바에 추가합니다.
  • onOptionsItemSelected 메소드는 메뉴 항목 클릭을 처리하여 각각의 항목에 따라 다른 액티비티로 전환하거나 데이터를 삭제합니다:
    • action_settings2: PersonnelReg 액티비티로 전환.
    • action_settings1: MainActivity 액티비티로 전환.
    • action_settings4: PersonnelList 액티비티로 전환.
    • action_settings5: 데이터베이스에서 인물 정보를 삭제

 

 

 

이 PersonnelDetail 클래스는 인물의 상세 정보를 표시하고, 다른 활동으로 이동하거나 데이터베이스에서 인물 정보를 삭제하는 기능을 제공합니다. Intent로부터 전달된 인물 이름을 사용하여 데이터베이스에서 해당 인물의 정보를 조회하고, 조회된 정보를 화면에 표시합니다. 메뉴 항목을 통해 다른 액티비티로 이동하거나 데이터를 삭제할 수 있습니다. View Binding을 사용하여 UI 요소를 초기화하고, 데이터베이스 작업을 수행하여 데이터를 관리합니다.