-
[android] android 데이터 관리 +CustomerManagement 최종구현app/android 2022. 1. 17. 19:19반응형
안드로이드 최종구현
https://hwantech.tistory.com/104ㅇ
[android] android 커스텀 리스트뷰 (custom listView)
<실습시간> 앞에 배운 리스트뷰를 이용하여 xml로 커스텀 리스트뷰를 만들어보장~~~ Student 클래스 이름 소속학과 학생번호 사진 클래스 구현방법 class StudentC (var name : String, var dept : String, var st..
hwantech.tistory.com
이용해서 데이터 관리까지하는 리스트뷰~~~~
CustomerManagement 로 구현해보았당
---------------------------------<중ㅇ!!!>---------------------------------------
메인화면에서 두 xml 화면으로 나눠서 들어가기 때문에
manifests에 이 소스를 적용시켜야한당
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="aca.hankook.CustomerManagement"> <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/AppTheme"> <activity android:name=".JasehiActivity"></activity> <activity android:name=".CustomerlistActivity" /> <activity android:name=".RegisterActivity" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
-----------------------------------------------------------------------------------------------------
구현시작!!!
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <ImageView android:padding="40dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main" /> <Button android:padding="20dp" android:id="@+id/button1" android:text="고객등록" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:padding="20dp" android:id="@+id/button2" android:text="고객현황" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
customerlist.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".CustomerlistActivity"> <TextView android:background="#8D8D8D" android:text="고객등록리스트" android:textColor="#ffffff" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
jasehi.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".JasehiActivity"> <TextView android:id="@+id/jName" android:text="이름" android:textSize="20sp" android:textColor="#3F51B5" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/jId" android:text="고객번호" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:text="이메일" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:text="고객등급" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
register.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:background="#8D8D8D" android:text="고객등록" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:text="성명" android:layout_width="60dp" android:layout_height="wrap_content" /> <EditText android:id="@+id/edtName" android:hint="이름을 입력하시오" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="성별" android:layout_width="60dp" android:layout_height="wrap_content" /> <RadioGroup android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton android:id="@+id/rb1" android:text="남" android:checked="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/rb2" android:text="여" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="휴대폰" android:layout_width="60dp" android:layout_height="wrap_content" /> <EditText android:id="@+id/edPhone" android:hint="휴대폰 번호를 입력하세요" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="이메일" android:layout_width="60dp" android:layout_height="wrap_content" /> <EditText android:id="@+id/edEmail" android:hint="이메일을 입력하시오" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="지역" android:layout_width="60dp" android:layout_height="wrap_content" /> <EditText android:id="@+id/edCity" android:hint="시/도를 입력하세요" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="고객등급" android:layout_width="60dp" android:layout_height="wrap_content" /> <Spinner android:id="@+id/edgrade" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <Button android:id="@+id/rButton1" android:text="등록" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
rowitem.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/itemImage" android:layout_width="80dp" android:layout_height="80dp" android:src="@drawable/s1"/> <LinearLayout android:layout_weight="8" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/itemNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="고객번호" /> <TextView android:id="@+id/itemName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="이름/성별" android:textSize="20sp" android:textColor="#ff0000" /> <TextView android:id="@+id/itemPhone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:textColor="#007BFF" android:text="연락처"/> <TextView android:id="@+id/itemCity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="지역" /> </LinearLayout> </LinearLayout>
CustomerC.kt
package aca.hankook.CustomerManagement class CustomerC (var custId : Int, var name : String, var sex : String, var phone : String, var city: String) { }
CustomerlistActivity.kt
package aca.hankook.CustomerManagement import android.content.Intent import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.customerlist.* class CustomerlistActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.customerlist) var custList : ArrayList<CustomerC> = arrayListOf() var myHelper = MyDBHelper(this) var sqlDB = myHelper.readableDatabase var cursor = sqlDB.rawQuery("select * from customerTBL", null) while(cursor.moveToNext()){ custList.add(CustomerC(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4))) } cursor.close() sqlDB.close() var adapter1 = ListViewAdapter(custList) listView1.adapter = adapter1 listView1.setOnItemClickListener { adapterView, view, i, l -> Toast.makeText(applicationContext, "선택" + custList.get(i).name, Toast.LENGTH_LONG) .show() var intent1 = Intent(applicationContext, JasehiActivity::class.java) intent1.putExtra("name", custList.get(i).name) intent1.putExtra("id", custList.get(i).custId) startActivity(intent1) } } }
JasehiActivity.kt
package aca.hankook.CustomerManagement import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.jasehi.* class JasehiActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.jasehi) var intent1 = intent var name = intent1.getStringExtra("name") var id = intent1.getStringExtra("Id") jName.text = name jId.text = id } }
ListViewAdapter.kt
package aca.hankook.CustomerManagement import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import kotlinx.android.synthetic.main.rowitem.view.* class ListViewAdapter(var custList: ArrayList<CustomerC>) : BaseAdapter() { override fun getItem(p0: Int): Any { return custList[p0] } override fun getItemId(p0: Int): Long { return p0.toLong() } override fun getCount(): Int { return custList.size } override fun getView(position: Int, view: View?, parent: ViewGroup?): View { var rowItemView = view if (rowItemView == null) { rowItemView = View.inflate(parent?.context, R.layout.rowitem, null) } val cust1 = custList[position] var sajinResid = parent!!.resources.getIdentifier("aca.hankook.CustomerManagement:" + "drawable/" + "s" + cust1.custId.toString(), null, null) rowItemView!!.itemImage.setImageResource(sajinResid) rowItemView.itemNo.text = "고객번호 : " + cust1.custId rowItemView.itemName.text = "이름 : " + cust1.name + "/" + cust1.sex rowItemView.itemPhone.text = "연락처 : " + cust1.phone rowItemView.itemCity.text = "지역 : " + cust1.city return rowItemView } }
MainActivity.kt
package aca.hankook.CustomerManagement import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button1.setOnClickListener { var intent1 = Intent(applicationContext, RegisterActivity::class.java) startActivity(intent1) } button2.setOnClickListener { var intent1 = Intent(applicationContext, CustomerlistActivity::class.java) startActivity(intent1) } } }
MyDBHelper.kt
package aca.hankook.CustomerManagement import android.content.Context import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteOpenHelper class MyDBHelper(var context: Context) : SQLiteOpenHelper(context, "customerDB", null, 1) { override fun onCreate(p0: SQLiteDatabase?) { var tableCreSql = "create table customerTBL( custId integer primary key autoincrement, name varchar(20), sex varchar(2), phone varchar(20), city varchar(20) );" p0!!.execSQL(tableCreSql) p0.execSQL("insert into customerTBL(name,sex,phone,city) values('홍길동', '남', '010-1111-1111', '서울')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('한지민', '여', '010-2222-2222', '경기')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('남주혁', '남', '010-3333-3333', '인천')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('조정석', '남', '010-4444-4444', '부산')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('유연석', '남', '010-5555-5555', '대구')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('정경호', '남', '010-6666-6666', '대전')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('김대명', '남', '010-7777-7777', '용인')") p0.execSQL("insert into customerTBL(name,sex,phone,city) values('전미도', '여', '010-8888-8888', '강원')") } override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) { p0!!.execSQL("drop table if exists customerTBL") onCreate(p0) } }
RegisterActivity.kt
package aca.hankook.CustomerManagement import android.os.Bundle import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.register.* class RegisterActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.register) rButton1.setOnClickListener { var name = edtName.text.toString() var sex = "" if (rb1.isChecked) { sex = "남" } else { sex = "여" } var grade = arrayOf("vip","gold","silver","new") var sAdapter1 = ArrayAdapter<String>(applicationContext, android.R.layout.simple_spinner_item, grade) edgrade.adapter = sAdapter1 var phone = edPhone.text.toString() var city = edCity.text.toString() var myHelper = MyDBHelper(this) var sqlDB = myHelper.writableDatabase var insertSql = "insert into customerTBL(name, sex, phone, city) values ('$name', '$sex', '$phone', '$city')" sqlDB.execSQL(insertSql) Toast.makeText(applicationContext, "inser ok" + name, Toast.LENGTH_SHORT).show() sqlDB.close() } } }
실행결과>>>>>
1)main 화면
2) 고객등록
3) 고객현황
5) DB추가 화면
6) jh 정보 화면 구현
이상 안드로이드 였슴다~~~~
반응형'app > android' 카테고리의 다른 글
[android] android 데이터 저장과 관리 (0) 2022.01.17 [android] android 커스텀 리스트뷰 (custom listView) (0) 2022.01.17 [android] android 어뎁터 뷰 (0) 2022.01.13 [android] android 액티비티와 인텐트 (0) 2022.01.13 [android] android 파일 처리 , 실습 간단 일기장 (0) 2022.01.13