diff --git a/app/build.gradle b/app/build.gradle index df93208..20af80a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { applicationId "top.fumiama.simpledict" minSdkVersion 26 targetSdkVersion 30 - versionCode 7 - versionName '1.5' + versionCode 8 + versionName '1.6' resConfigs "zh", "zh-rCN" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/top/fumiama/simpledict/MainActivity.kt b/app/src/main/java/top/fumiama/simpledict/MainActivity.kt index bd39339..5c0abbf 100644 --- a/app/src/main/java/top/fumiama/simpledict/MainActivity.kt +++ b/app/src/main/java/top/fumiama/simpledict/MainActivity.kt @@ -7,6 +7,9 @@ import android.content.Context import android.content.Intent import android.os.Bundle import android.speech.RecognizerIntent +import android.text.SpannableString +import android.text.Spanned +import android.text.style.StrikethroughSpan import android.util.Log import android.view.LayoutInflater import android.view.View @@ -15,6 +18,7 @@ import android.widget.EditText import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.children import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.lapism.search.internal.SearchLayout @@ -49,8 +53,9 @@ class MainActivity : AppCompatActivity() { } ffms.apply { + val recyclerView = findViewById(R.id.search_recycler_view) setAdapterLayoutManager(LinearLayoutManager(this@MainActivity)) - val adapter = SearchViewHolder(findViewById(R.id.search_recycler_view), findViewById(R.id.search_search_edit_text)).RecyclerViewAdapter() + val adapter = SearchViewHolder(recyclerView, findViewById(R.id.search_search_edit_text)).RecyclerViewAdapter() setAdapter(adapter) navigationIconSupport = SearchLayout.NavigationIconSupport.SEARCH setOnNavigationClickListener(object : SearchLayout.OnNavigationClickListener { @@ -73,7 +78,10 @@ class MainActivity : AppCompatActivity() { if(query.isNotEmpty()) { val key = query.toString() val data = dict[key] - showDictAlert(key, data) { adapter.refresh() } + showDictAlert(key, data, recyclerView.children.toList().let { + val i = it.map { it.ta.text }.indexOf(key) + if(i >= 0) it[i] else null + }) { adapter.refresh() } } return true } @@ -126,7 +134,7 @@ class MainActivity : AppCompatActivity() { }.start() } - private fun showDictAlert(key: String, data: String?, notify: ()->Unit) { + private fun showDictAlert(key: String, data: String?, line: View?, refresh: (()->Unit)?=null) { val hintAdd = if(data != null && data != "null") "重设" else "添加" hasLiked = false AlertDialog.Builder(this@MainActivity) @@ -142,7 +150,7 @@ class MainActivity : AppCompatActivity() { val newText = t.text.toString() if (t.text.isNotEmpty() && newText != data) Thread { dict[key] = newText - notify() + line?.tb?.text = newText }.start() else Toast.makeText(this, "未更改", Toast.LENGTH_SHORT).show() } @@ -152,7 +160,14 @@ class MainActivity : AppCompatActivity() { .setNeutralButton("删除") { _, _ -> Thread{ dict -= key - notify() + line?.apply { + val delKey = SpannableString(key) + val delData = SpannableString(data) + delKey.setSpan(StrikethroughSpan(), 0, key.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + delData.setSpan(StrikethroughSpan(), 0, (data?.length?:0), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + ta.text = delKey + tb.text = delData + } }.start() } .setNegativeButton(android.R.string.cancel) { _, _ -> } @@ -218,7 +233,7 @@ class MainActivity : AppCompatActivity() { vl.setBackgroundResource(if(like) R.drawable.ic_like_filled else R.drawable.ic_like) Log.d("MyMain", "Set like of $key: $like") setOnClickListener { - showDictAlert(key, data) {refresh()} + showDictAlert(key, data, this) } setOnLongClickListener { cm?.setPrimaryClip(ClipData.newPlainText("SimpleDict", "$key\n$data")) diff --git a/app/winrelease/app-winrelease.apk b/app/winrelease/app-winrelease.apk index 202f56d..b11d68f 100644 Binary files a/app/winrelease/app-winrelease.apk and b/app/winrelease/app-winrelease.apk differ diff --git a/app/winrelease/output-metadata.json b/app/winrelease/output-metadata.json index 4b73e84..94728de 100644 --- a/app/winrelease/output-metadata.json +++ b/app/winrelease/output-metadata.json @@ -10,8 +10,8 @@ { "type": "SINGLE", "filters": [], - "versionCode": 7, - "versionName": "1.5", + "versionCode": 8, + "versionName": "1.6", "outputFile": "app-winrelease.apk" } ]