[android] android 데이터 관리 +CustomerManagement 최종구현
안드로이드 최종구현
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 정보 화면 구현
이상 안드로이드 였슴다~~~~