Fix database list change

This commit is contained in:
J-Jamet
2020-08-09 20:59:34 +02:00
parent a0ceb788db
commit 0eac4d4d7f
3 changed files with 35 additions and 21 deletions

View File

@@ -167,25 +167,21 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
when (databaseFiles.databaseFileAction) {
DatabaseFilesViewModel.DatabaseFileAction.NONE -> {
mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList)
mAdapterDatabaseHistory?.notifyDataSetChanged()
}
DatabaseFilesViewModel.DatabaseFileAction.ADD -> {
databaseFiles.databaseFileToActivate?.let { databaseFileToAdd ->
// TODO notify unique element
mAdapterDatabaseHistory?.notifyDataSetChanged()
mAdapterDatabaseHistory?.addDatabaseFileHistory(databaseFileToAdd)
}
GroupActivity.launch(this@FileDatabaseSelectActivity)
}
DatabaseFilesViewModel.DatabaseFileAction.UPDATE -> {
databaseFiles.databaseFileToActivate?.let { databaseFileToUpdate ->
// TODO notify unique element
mAdapterDatabaseHistory?.notifyDataSetChanged()
mAdapterDatabaseHistory?.updateDatabaseFileHistory(databaseFileToUpdate)
}
}
DatabaseFilesViewModel.DatabaseFileAction.DELETE -> {
databaseFiles.databaseFileToActivate?.let { databaseFileToDelete ->
mAdapterDatabaseHistory?.deleteDatabaseFileHistory(databaseFileToDelete)
mAdapterDatabaseHistory?.notifyDataSetChanged()
}
}
}

View File

@@ -43,8 +43,8 @@ class FileDatabaseHistoryAdapter(context: Context)
private val listDatabaseFiles = ArrayList<DatabaseFile>()
private var mExpandedPosition = -1
private var mPreviousExpandedPosition = -1
private var mExpandedDatabaseFile: DatabaseFile? = null
private var mPreviousExpandedDatabaseFile: DatabaseFile? = null
@ColorInt
private val defaultColor: Int
@@ -70,10 +70,11 @@ class FileDatabaseHistoryAdapter(context: Context)
val databaseFile = listDatabaseFiles[position]
// Click item to open file
if (fileItemOpenListener != null)
if (fileItemOpenListener != null) {
holder.fileContainer.setOnClickListener {
fileItemOpenListener?.invoke(databaseFile)
}
}
// File alias
holder.fileAlias.text = databaseFile.databaseAlias
@@ -104,7 +105,7 @@ class FileDatabaseHistoryAdapter(context: Context)
}
// Click on information
val isExpanded = position == mExpandedPosition
val isExpanded = databaseFile == mExpandedDatabaseFile
//This line hides or shows the layout in question
holder.fileExpandContainer.visibility = if (isExpanded) View.VISIBLE else View.GONE
@@ -131,16 +132,16 @@ class FileDatabaseHistoryAdapter(context: Context)
}
if (isExpanded) {
mPreviousExpandedPosition = position
mPreviousExpandedDatabaseFile = databaseFile
}
holder.fileInformation.setOnClickListener {
mExpandedPosition = if (isExpanded) -1 else position
mExpandedDatabaseFile = if (isExpanded) null else databaseFile
// Notify change
if (mPreviousExpandedPosition < itemCount)
notifyItemChanged(mPreviousExpandedPosition)
notifyItemChanged(position)
val previousExpandedPosition = listDatabaseFiles.indexOf(mPreviousExpandedDatabaseFile)
notifyItemChanged(previousExpandedPosition)
val expandedPosition = listDatabaseFiles.indexOf(mExpandedDatabaseFile)
notifyItemChanged(expandedPosition)
}
// Refresh View / Close alias modification if not contains fileAlias
@@ -157,13 +158,30 @@ class FileDatabaseHistoryAdapter(context: Context)
listDatabaseFiles.clear()
}
fun replaceAllDatabaseFileHistoryList(listFileDatabaseHistoryToAdd: List<DatabaseFile>) {
listDatabaseFiles.clear()
listDatabaseFiles.addAll(listFileDatabaseHistoryToAdd)
fun addDatabaseFileHistory(fileDatabaseHistoryToAdd: DatabaseFile) {
listDatabaseFiles.add(0, fileDatabaseHistoryToAdd)
notifyItemInserted(0)
}
fun updateDatabaseFileHistory(fileDatabaseHistoryToUpdate: DatabaseFile) {
val index = listDatabaseFiles.indexOf(fileDatabaseHistoryToUpdate)
if (listDatabaseFiles.remove(fileDatabaseHistoryToUpdate)) {
listDatabaseFiles.add(index, fileDatabaseHistoryToUpdate)
notifyItemChanged(index)
}
}
fun deleteDatabaseFileHistory(fileDatabaseHistoryToDelete: DatabaseFile) {
listDatabaseFiles.remove(fileDatabaseHistoryToDelete)
val index = listDatabaseFiles.indexOf(fileDatabaseHistoryToDelete)
if (listDatabaseFiles.remove(fileDatabaseHistoryToDelete)) {
notifyItemRemoved(index)
}
}
fun replaceAllDatabaseFileHistoryList(listFileDatabaseHistoryToAdd: List<DatabaseFile>) {
listDatabaseFiles.clear()
listDatabaseFiles.addAll(listFileDatabaseHistoryToAdd)
notifyDataSetChanged()
}
fun setOnFileDatabaseHistoryOpenListener(listener : ((DatabaseFile)->Unit)?) {

View File

@@ -14,7 +14,7 @@ data class DatabaseFile(var databaseUri: Uri? = null,
if (this === other) return true
if (other !is DatabaseFile) return false
if (databaseUri == null) return false
if (databaseUri == null || other.databaseUri == null) return false
if (databaseUri != other.databaseUri) return false
return true