From 4dcf00a76f034ee00f4fb3ce5d86f55df5bae57e Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Sun, 6 Jun 2021 18:31:08 +0300 Subject: [PATCH] Restore chat list position when returning from chat --- .../com/tutpro/baresip/ChatsActivity.kt | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt index a0ce505e..a2d306b3 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt @@ -3,15 +3,14 @@ package com.tutpro.baresip import android.app.Activity import android.content.* import android.os.Bundle -import androidx.appcompat.app.AlertDialog -import androidx.appcompat.app.AppCompatActivity import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.* import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity import com.tutpro.baresip.databinding.ActivityChatsBinding - import java.util.* class ChatsActivity: AppCompatActivity() { @@ -23,6 +22,7 @@ class ChatsActivity: AppCompatActivity() { internal lateinit var peerUri: AutoCompleteTextView internal lateinit var plusButton: ImageButton internal lateinit var aor: String + private var scrollPosition = -1 public override fun onCreate(savedInstanceState: Bundle?) { @@ -56,6 +56,7 @@ class ChatsActivity: AppCompatActivity() { } listView.onItemClickListener = AdapterView.OnItemClickListener { _, _, pos, _ -> + scrollPosition = pos val i = Intent(this, ChatActivity::class.java) val b = Bundle() b.putString("aor", aor) @@ -148,12 +149,25 @@ class ChatsActivity: AppCompatActivity() { } + override fun onPause() { + MainActivity.activityAor = aor + super.onPause() + } + override fun onResume() { super.onResume() clAdapter.clear() uaMessages = uaMessages(aor) clAdapter = ChatListAdapter(this, uaMessages) listView.adapter = clAdapter + if (uaMessages.count() > 0) { + if (scrollPosition >= 0) { + listView.setSelection(scrollPosition) + scrollPosition = -1 + } else { + listView.setSelection(0) + } + } } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -203,11 +217,6 @@ class ChatsActivity: AppCompatActivity() { returnResult() } - override fun onPause() { - MainActivity.activityAor = aor - super.onPause() - } - private fun returnResult() { val i = Intent() setResult(Activity.RESULT_CANCELED, i)