diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt index daf83b28..4358094d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseAdapterListener.kt @@ -8,8 +8,9 @@ interface BaseAdapterListener { /** * Request the host to edit the specified item. * @param guid Unique identifier (GUID) of the item + * @param position Current position in the adapter (optional; host should validate it) */ - fun onEdit(guid: String) + fun onEdit(guid: String, position: Int) /** * Request the host to remove the specified item. Position is provided for optional animation or validation. diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt index 23906da0..722208cc 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt @@ -31,7 +31,8 @@ import kotlinx.coroutines.withContext class RoutingSettingActivity : BaseActivity() { private val binding by lazy { ActivityRoutingSettingBinding.inflate(layoutInflater) } - + private val ownerActivity: RoutingSettingActivity + get() = this private val viewModel: RoutingSettingsViewModel by viewModels() private lateinit var adapter: RoutingSettingRecyclerAdapter private var mItemTouchHelper: ItemTouchHelper? = null @@ -57,7 +58,7 @@ class RoutingSettingActivity : BaseActivity() { //setContentView(binding.root) setContentViewWithToolbar(binding.root, showHomeAsUp = true, title = getString(R.string.routing_settings_title)) - adapter = RoutingSettingRecyclerAdapter(this, viewModel) + adapter = RoutingSettingRecyclerAdapter(viewModel, ActivityAdapterListener()) binding.recyclerView.setHasFixedSize(true) binding.recyclerView.layoutManager = LinearLayoutManager(this) @@ -202,4 +203,23 @@ class RoutingSettingActivity : BaseActivity() { viewModel.reload() adapter.notifyDataSetChanged() } + + private inner class ActivityAdapterListener : BaseAdapterListener { + override fun onEdit(guid: String, position: Int) { + startActivity( + Intent(ownerActivity, RoutingEditActivity::class.java) + .putExtra("position", position) + ) + } + + override fun onRemove(guid: String, position: Int) { + } + + override fun onShare(url: String) { + } + + override fun onRefreshData() { + refreshData() + } + } } \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt index 735bd634..3ea978b4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingRecyclerAdapter.kt @@ -1,6 +1,5 @@ package com.v2ray.ang.ui -import android.content.Intent import android.graphics.Color import android.view.LayoutInflater import android.view.View @@ -13,12 +12,11 @@ import com.v2ray.ang.helper.ItemTouchHelperViewHolder import com.v2ray.ang.viewmodel.RoutingSettingsViewModel class RoutingSettingRecyclerAdapter( - val activity: RoutingSettingActivity, - private val viewModel: RoutingSettingsViewModel + private val viewModel: RoutingSettingsViewModel, + private val adapterListener: BaseAdapterListener? ) : RecyclerView.Adapter(), ItemTouchHelperAdapter { - private var mActivity: RoutingSettingActivity = activity override fun getItemCount() = viewModel.getAll().size override fun onBindViewHolder(holder: MainViewHolder, position: Int) { @@ -33,10 +31,7 @@ class RoutingSettingRecyclerAdapter( holder.itemView.setBackgroundColor(Color.TRANSPARENT) holder.itemRoutingSettingBinding.layoutEdit.setOnClickListener { - mActivity.startActivity( - Intent(mActivity, RoutingEditActivity::class.java) - .putExtra("position", position) - ) + adapterListener?.onEdit("", position) } holder.itemRoutingSettingBinding.chkEnable.setOnCheckedChangeListener { it, isChecked -> @@ -76,7 +71,7 @@ class RoutingSettingRecyclerAdapter( } override fun onItemMoveCompleted() { - mActivity.refreshData() + adapterListener?.onRefreshData() } override fun onItemDismiss(position: Int) { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt index 828e5d5e..7dbad45f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt @@ -103,7 +103,7 @@ class SubSettingActivity : BaseActivity() { } private inner class ActivityAdapterListener : BaseAdapterListener { - override fun onEdit(guid: String) { + override fun onEdit(guid: String, position: Int) { startActivity( Intent(ownerActivity, SubEditActivity::class.java) .putExtra("subId", guid) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt index f97bb70a..380bb3f9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt @@ -30,7 +30,7 @@ class SubSettingRecyclerAdapter( holder.itemView.setBackgroundColor(Color.TRANSPARENT) holder.itemSubSettingBinding.layoutEdit.setOnClickListener { - adapterListener?.onEdit(subId) + adapterListener?.onEdit(subId, position) } holder.itemSubSettingBinding.layoutRemove.setOnClickListener {