diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 06c487e..f343387 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) - id("org.jetbrains.kotlin.kapt") + id("com.google.gms.google-services") } android { @@ -47,9 +47,6 @@ dependencies { androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) - // Room - val room_version = "2.8.0" - implementation("androidx.room:room-runtime:$room_version") - kapt("androidx.room:room-compiler:$room_version") - implementation("androidx.room:room-ktx:$room_version") + implementation(platform("com.google.firebase:firebase-bom:34.3.0")) + implementation("com.google.firebase:firebase-database") } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/AppDatabase.kt b/app/src/main/java/com/example/myapplication/AppDatabase.kt deleted file mode 100644 index 171b702..0000000 --- a/app/src/main/java/com/example/myapplication/AppDatabase.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.example.myapplication - -import androidx.room.Database -import androidx.room.Room -import androidx.room.RoomDatabase -import android.content.Context - -@Database(entities = [NoteEntity::class], version = 1) -abstract class AppDatabase : RoomDatabase() { - abstract fun noteDao(): NoteDao - - companion object { - @Volatile private var INSTANCE: AppDatabase? = null - - fun getDatabase(context: Context): AppDatabase { - return INSTANCE ?: synchronized(this) { - Room.databaseBuilder( - context.applicationContext, - AppDatabase::class.java, - "my_database" - ).build().also { INSTANCE = it } - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/MainActivity.kt b/app/src/main/java/com/example/myapplication/MainActivity.kt index 921855f..d59708f 100644 --- a/app/src/main/java/com/example/myapplication/MainActivity.kt +++ b/app/src/main/java/com/example/myapplication/MainActivity.kt @@ -3,50 +3,47 @@ package com.example.myapplication import android.os.Bundle import android.widget.Button import android.widget.EditText +import android.widget.TextView +import android.widget.Toast import androidx.activity.ComponentActivity -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import kotlinx.coroutines.launch +import com.google.firebase.database.FirebaseDatabase class MainActivity : ComponentActivity() { private lateinit var etInput: EditText - private lateinit var btnAdd: Button - private lateinit var recyclerView: RecyclerView - private lateinit var adapter: NoteAdapter + private lateinit var btnSave: Button + private lateinit var btnLoad: Button + private lateinit var tvResult: TextView - private lateinit var db: AppDatabase + private val db = FirebaseDatabase.getInstance().reference override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) etInput = findViewById(R.id.etInput) - btnAdd = findViewById(R.id.btnAdd) - recyclerView = findViewById(R.id.recyclerView) + btnSave = findViewById(R.id.btnSave) + btnLoad = findViewById(R.id.btnLoad) + tvResult = findViewById(R.id.tvResult) - adapter = NoteAdapter(emptyList()) - recyclerView.layoutManager = LinearLayoutManager(this) - recyclerView.adapter = adapter - - db = AppDatabase.getDatabase(this) - - // Добавляем заметку - btnAdd.setOnClickListener { + // Сохранение данных + btnSave.setOnClickListener { val text = etInput.text.toString() if (text.isNotEmpty()) { - lifecycleScope.launch { - db.noteDao().insert(NoteEntity(text = text)) - } + val noteId = db.push().key!! // генерируем уникальный id + db.child("notes").child(noteId).setValue(text) + Toast.makeText(this, "Сохранено", Toast.LENGTH_SHORT).show() etInput.text.clear() } } - // Подписываемся на изменения - lifecycleScope.launch { - db.noteDao().getAll().collect { notes -> - adapter.update(notes) + // Загрузка данных + btnLoad.setOnClickListener { + db.child("notes").get().addOnSuccessListener { snapshot -> + val list = snapshot.children.mapNotNull { it.getValue(String::class.java) } + tvResult.text = list.joinToString("\n") + }.addOnFailureListener { + Toast.makeText(this, "Ошибка загрузки", Toast.LENGTH_SHORT).show() } } } diff --git a/app/src/main/java/com/example/myapplication/Note.kt b/app/src/main/java/com/example/myapplication/Note.kt deleted file mode 100644 index b9a0f9f..0000000 --- a/app/src/main/java/com/example/myapplication/Note.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.example.myapplication - -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity(tableName = "notes") -data class NoteEntity( - @PrimaryKey(autoGenerate = true) val id: Int = 0, - val text: String -) \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/NoteAdapter.kt b/app/src/main/java/com/example/myapplication/NoteAdapter.kt deleted file mode 100644 index 5100377..0000000 --- a/app/src/main/java/com/example/myapplication/NoteAdapter.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.example.myapplication - -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView - -class NoteAdapter(private var notes: List) : - RecyclerView.Adapter() { - - class NoteViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NoteViewHolder { - val textView = LayoutInflater.from(parent.context) - .inflate(android.R.layout.simple_list_item_1, parent, false) as TextView - return NoteViewHolder(textView) - } - - override fun onBindViewHolder(holder: NoteViewHolder, position: Int) { - holder.textView.text = notes[position].text - } - - override fun getItemCount() = notes.size - - fun update(newNotes: List) { - notes = newNotes - notifyDataSetChanged() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/NoteDao.kt b/app/src/main/java/com/example/myapplication/NoteDao.kt deleted file mode 100644 index bbf57df..0000000 --- a/app/src/main/java/com/example/myapplication/NoteDao.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.myapplication - -import androidx.room.Dao -import androidx.room.Insert -import androidx.room.Query -import kotlinx.coroutines.flow.Flow - -@Dao -interface NoteDao { - @Insert - suspend fun insert(note: NoteEntity) - - @Query("SELECT * FROM notes") - fun getAll(): Flow> -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 68dfe12..109ee2b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,19 +8,34 @@ android:id="@+id/etInput" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="Введите заметку" /> + android:hint="Введите текст" /> -