Обновление:
результат
Результат
Код, который вы просили:
confirm.setOnClickListener {
//CICLO IF PARA O CASO ALGUM CAMPO NÃO ESTEJA PREENCHIDO, SE preenchido ele passa para o Else que guarda o valor da variavel na coluna da BD
if (IDinput.text.isEmpty()) {
Toast.makeText(this, "Código necessário", Toast.LENGTH_SHORT).show()
IDinput.requestFocus()
} else {
val clientes = clientes()
clientes.codigo_cliente = IDinput.text.toString().toInt()
if (Nomeinput.text.isEmpty()) {
Toast.makeText(this, "Precisa de inserir um nome", Toast.LENGTH_LONG).show()
Nomeinput.requestFocus()
} else {
val clientes = clientes()
clientes.nome_cliente = Nomeinput.text.toString()
}
if (Moradainput.text.isEmpty()) {
clientes.morada_cliente = ("Sem registo")
} else {
clientes.morada_cliente = Moradainput.text.toString()
}
if (Localidadeinput.text.isEmpty()) {
clientes.localidade_cliente = ("Sem registo")
} else {
clientes.localidade_cliente = Localidadeinput.text.toString()
}
if (cod1.text.isEmpty()) {
clientes.postal_cliente = ("Sem registo")
} else {
clientes.postal_cliente = cod1.text.toString()
}
if (Contribuinteinput.text.isEmpty()) {
Toast.makeText(this, "Precisa de inserir o contribuinte", Toast.LENGTH_LONG)
.show()
Contribuinteinput.requestFocus()
} else {
val clientes = clientes()
clientes.contribuinte_cliente = Contribuinteinput.text.toString()
}
if (Telefoneinput.text.isEmpty()) {
clientes.telefone_cliente = ("Sem registo")
}else {
clientes.telefone_cliente = Telefoneinput.text.toString()
}
if (Zonainput.text.isEmpty()) {
Toast.makeText(this, "Precisa de inserir o pais", Toast.LENGTH_LONG)
.show()
Zonainput.requestFocus()
} else {
val clientes = clientes()
clientes.pais_cliente = Zonainput.text.toString()
Menu_Clientes.IS4.addClient(this,clientes)
IDinput.requestFocus()
Nomeinput.requestFocus()
Contribuinteinput.requestFocus()
Zonainput.requestFocus()
}
}
}
}
}
хорошо, больше нет сообщения об ошибке, но когда я вставляю данные, подобные изображению: форма , он не отправляет никаких данных, вот что происходит: recyclerView .
И база данных, даже когда я чищу, когда я перезагружаю приложение, он всегда запускается так.
База данных
class IS4(context: Context, name : String?, factory:SQLiteDatabase.CursorFactory?, version : Int) :
SQLiteOpenHelper(context, DATABASE_NAME, factory, DATABASE_VERSION){
companion object {
private val DATABASE_NAME = "IS4.db"
private val DATABASE_VERSION = 1
private val CLIENTES_TABLE_NAME = " Cliente"
private val COL_1 = "Codigo"
private val COL_2 = "Nome"
private val COL_3 = "Morada"
private val COL_4 = "Localidade"
private val COL_5 = "Codigo_postal"
private val COL_6 = "Contribuinte"
private val COL_7 = "Telefone"
private val COL_8 = "Pais"
}
override fun onCreate(db: SQLiteDatabase?) {
val CREATE_CLIENTES_TABLE = ("CREATE TABLE $CLIENTES_TABLE_NAME(" +
"$COL_1 INTEGER," +
"$COL_2 TEXT," +
"$COL_3 TEXT," +
"$COL_4 TEXT," +
"$COL_5 TEXT," +
"$COL_6 TEXT," +
"$COL_7 TEXT," +
"$COL_8 TEXT )")
db?.execSQL(CREATE_CLIENTES_TABLE)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
fun getClient (mCtx : Context) : ArrayList<clientes>{
val qry = "Select * From $CLIENTES_TABLE_NAME"
val db = this.readableDatabase
val cursor = db.rawQuery(qry,null)
val clientex = ArrayList<clientes>()
if (cursor.count == 0 )
Toast.makeText(mCtx, "Sem Clientes adicionados", Toast.LENGTH_SHORT).show() else {
while (cursor.moveToNext()) {
val clientes = clientes()
clientes.codigo_cliente = cursor.getInt(cursor.getColumnIndex(COL_1))
clientes.nome_cliente = cursor.getString(cursor.getColumnIndex(COL_2))
clientes.morada_cliente = cursor.getString(cursor.getColumnIndex(COL_3))
clientes.localidade_cliente = cursor.getString(cursor.getColumnIndex(COL_4))
clientes.postal_cliente = cursor.getString(cursor.getColumnIndex(COL_5))
clientes.contribuinte_cliente = cursor.getString(cursor.getColumnIndex(COL_6))
clientes.telefone_cliente = cursor.getString(cursor.getColumnIndex(COL_7))
clientes.pais_cliente = cursor.getString(cursor.getColumnIndex(COL_8))
clientex.add(clientes)
}
}
cursor.close()
db.close()
return clientex
}
fun addClient(mCtx: Context, clientes: clientes){
val values = ContentValues()
values.put(COL_1,clientes.codigo_cliente)
values.put(COL_2,clientes.nome_cliente)
values.put(COL_3,clientes.morada_cliente)
values.put(COL_4,clientes.localidade_cliente)
values.put(COL_5,clientes.postal_cliente)
values.put(COL_6,clientes.contribuinte_cliente)
values.put(COL_7,clientes.telefone_cliente)
values.put(COL_8,clientes.pais_cliente)
val db = this.writableDatabase
try {
db.insert(CLIENTES_TABLE_NAME,null,values)
Toast.makeText(mCtx,"Cliente Adicionado", Toast.LENGTH_SHORT).show()
} catch (e : Exception){
Toast.makeText(mCtx,e.message,Toast.LENGTH_SHORT).show()
}
db.close()
}
Модель
class clientes {
var codigo_cliente: Int? = 0
var nome_cliente: String? = ""
var morada_cliente: String? = ""
var localidade_cliente: String? = ""
var postal_cliente: String? = ""
var contribuinte_cliente: String? = ""
var telefone_cliente: String? = ""
var pais_cliente: String? = ""
listview
private fun verClientes(){
val clienteslista = IS4 .getClient(this)
val adapter = clientesAdapter(this,clienteslista)
val rv : RecyclerView = findViewById(R.id.rv)
rv.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL,false) as RecyclerView.LayoutManager
rv.adapter = adapter
}
Адаптер
class clientesAdapter (mCtx : Context, val clientes : ArrayList<clientes>) : RecyclerView.Adapter<clientesAdapter.ViewHolder>()
{
val mCtx = mCtx
class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){
val IDcliente_view = itemView.IDcliente_view
val Name_view = itemView.Name_view
val delete_button = itemView.delete_button
val update_button = itemView.update_button
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): clientesAdapter.ViewHolder {
val v = LayoutInflater.from(p0.context).inflate(R.layout.menu_client_app,p0,false)
return ViewHolder(v)
}
override fun getItemCount(): Int {
return clientes.size
}
override fun onBindViewHolder(p0: clientesAdapter.ViewHolder, p1: Int) {
val client : clientes = clientes[p1]
p0.IDcliente_view.text = client.codigo_cliente.toString()
p0.Name_view.text = client.nome_cliente
}
}
После исправления ошибки проблема сейчас в вставке, он не распознает никаких значений, только "pais" = значение страны.