Browse Source

1. SearchView.kt refactor

咸光金 4 năm trước cách đây
mục cha
commit
c6b106d0f3

+ 0 - 33
app/src/main/java/com/quansu/heifengwuliu/activity/AllCarActivity.kt

@@ -1,10 +1,7 @@
 package com.quansu.heifengwuliu.activity
 
 import android.os.Bundle
-import android.text.TextUtils
 import android.view.View
-import android.view.inputmethod.EditorInfo
-import android.widget.TextView
 import com.google.gson.Gson
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.adapter.CollectionAdapter
@@ -22,12 +19,6 @@ class AllCarActivity : MBRActivity<AllCarVModel, CollectionAdapter, ActivityColl
         binding.butSure.text = "确定"
     }
 
-
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
-        search()
-    }
-
     override fun listeners() {
         super.listeners()
         binding.butSure.setOnClickListener {
@@ -53,30 +44,6 @@ class AllCarActivity : MBRActivity<AllCarVModel, CollectionAdapter, ActivityColl
         }
     }
 
-    private fun search() {
-        binding.search.getIvDelete()!!.setOnClickListener {
-            if (!TextUtils.isEmpty(binding.search.getEtName()!!.text.toString().trim { it <= ' ' })) {
-                binding.search.getEtName()!!.setText(null)
-                onRefresh()
-            } else {
-                toast("已经删除搜索条件!")
-            }
-        }
-
-        binding.search.getEtName()!!.setOnEditorActionListener(TextView.OnEditorActionListener { textView, i, keyEvent ->
-            if (i == EditorInfo.IME_ACTION_SEARCH) {
-                vm.k = binding.search.getEtName()!!.text.toString().trim()
-                onRefresh()
-                return@OnEditorActionListener true
-            }
-            false
-        })
-
-        binding.search.getTvSearch()!!.setOnClickListener { t ->
-            vm.k = binding.search.getEtName()!!.text.toString().trim()
-            onRefresh()
-        }
-    }
 
     override fun binding(): ActivityCollectionBinding {
         return ActivityCollectionBinding.inflate(layoutInflater)

+ 0 - 34
app/src/main/java/com/quansu/heifengwuliu/activity/CollectionActivity.kt

@@ -3,10 +3,7 @@ package com.quansu.heifengwuliu.activity
 import android.app.Activity
 import android.content.Intent
 import android.os.Bundle
-import android.text.TextUtils
 import android.view.View
-import android.view.inputmethod.EditorInfo
-import android.widget.TextView
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.adapter.CollectionAdapter
 import com.quansu.heifengwuliu.base.MBRActivity
@@ -18,7 +15,6 @@ import com.ysnows.base.utils.UiSwitch
 
 class CollectionActivity : MBRActivity<CollectionVModel, CollectionAdapter, ActivityCollectionBinding>() {
 
-    var k: String = ""
     var type = "1"// 0 不显示选择按钮  1显示选择按钮
 
 
@@ -60,11 +56,6 @@ class CollectionActivity : MBRActivity<CollectionVModel, CollectionAdapter, Acti
     }
 
 
-    override fun initCreate(savedInstanceState: Bundle?) {
-        super.initCreate(savedInstanceState)
-        search()
-    }
-
     override fun listeners() {
         super.listeners()
         binding.butSure.setOnClickListener {
@@ -75,31 +66,6 @@ class CollectionActivity : MBRActivity<CollectionVModel, CollectionAdapter, Acti
     }
 
 
-    private fun search() {
-        binding.search.getIvDelete()!!.setOnClickListener {
-            if (!TextUtils.isEmpty(binding.search.getEtName()!!.text.toString().trim { it <= ' ' })) {
-                binding.search.getEtName()!!.setText(null)
-                onRefresh()
-            } else {
-                toast("已经删除搜索条件!")
-            }
-        }
-
-        binding.search.getEtName()!!.setOnEditorActionListener(TextView.OnEditorActionListener { textView, i, keyEvent ->
-            if (i == EditorInfo.IME_ACTION_SEARCH) {
-                k = binding.search.getEtName()!!.text.toString().trim()
-                onRefresh()
-                return@OnEditorActionListener true
-            }
-            false
-        })
-
-        binding.search.getTvSearch()!!.setOnClickListener { t ->
-            k = binding.search.getEtName()!!.text.toString().trim()
-            onRefresh()
-        }
-    }
-
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         super.onActivityResult(requestCode, resultCode, data)
         if (MIntentAction.REQUEST_CODE_ONE == requestCode && resultCode == Activity.RESULT_OK) {

+ 16 - 0
app/src/main/java/com/quansu/heifengwuliu/binding/SearchViewBindingAdapter.java

@@ -0,0 +1,16 @@
+package com.quansu.heifengwuliu.binding;
+
+import com.quansu.heifengwuliu.vmodel.CollectionVModel;
+import com.quansu.heifengwuliu.widget.SearchView;
+
+import androidx.databinding.BindingAdapter;
+
+public class SearchViewBindingAdapter {
+
+
+    @BindingAdapter("vm")
+    public static void setViewModel(SearchView view, CollectionVModel vModel) {
+        view.setViewModel(vModel);
+    }
+
+}

+ 2 - 26
app/src/main/java/com/quansu/heifengwuliu/fragment/AddressFragment.kt

@@ -9,6 +9,7 @@ import android.view.ViewGroup
 import android.view.inputmethod.EditorInfo
 import android.widget.TextView.OnEditorActionListener
 import androidx.recyclerview.widget.LinearLayoutManager
+import com.qmuiteam.qmui.kotlin.onClick
 import com.quansu.heifengwuliu.activity.AddressAddActivity
 import com.quansu.heifengwuliu.adapter.AddressAdapter
 import com.quansu.heifengwuliu.base.MBRFragment
@@ -60,7 +61,7 @@ class AddressFragment : MBRFragment<AddressVModel, AddressAdapter, FragmentAddre
         }
 
         binding.sidebar.setOnSelectedListener { position, text ->
-            if (adapter().data != null && adapter().data.size > 0) {
+            if (adapter().data.size > 0) {
                 for (i in 0 until adapter().data.size) {
                     var client = adapter().data[i]
                     if (text == client.py) {
@@ -72,31 +73,6 @@ class AddressFragment : MBRFragment<AddressVModel, AddressAdapter, FragmentAddre
 
             }
         }
-
-        binding.search.getIvDelete()!!.setOnClickListener {
-            if (!TextUtils.isEmpty(binding.search.getEtName()!!.text.toString().trim { it <= ' ' })) {
-                binding.search.getEtName()!!.setText(null)
-                onRefresh()
-            } else {
-                toast("已经删除搜索条件!")
-            }
-        }
-
-
-        binding.search.getEtName()!!.setOnEditorActionListener(OnEditorActionListener { textView, i, keyEvent ->
-            if (i == EditorInfo.IME_ACTION_SEARCH) {
-                vm.k = binding.search.getEtName()!!.text.toString().trim()
-                onRefresh()
-                return@OnEditorActionListener true
-            }
-            false
-        })
-
-        binding.search.getTvSearch()!!.setOnClickListener { t ->
-            vm.k = binding.search.getEtName()!!.text.toString().trim()
-            onRefresh()
-        }
-
     }
 
 

+ 1 - 7
app/src/main/java/com/quansu/heifengwuliu/vmodel/AllCarVModel.kt

@@ -10,13 +10,7 @@ import com.ysnows.base.base.BRViewModel
 import com.ysnows.base.net.IResponse
 import io.reactivex.Observable
 
-class AllCarVModel : BRViewModel<BRRepository>() {
-    @Bindable
-    var k: String = ""
-        set(value) {
-            field = value
-            notifyPropertyChanged(BR.k)
-        }
+class AllCarVModel : SearchVModel() {
 
     fun setSaveDriver(arr: String) {
         //添加司机

+ 1 - 7
app/src/main/java/com/quansu/heifengwuliu/vmodel/CollectionVModel.kt

@@ -10,13 +10,7 @@ import com.ysnows.base.base.BRViewModel
 import com.ysnows.base.net.IResponse
 import io.reactivex.Observable
 
-class CollectionVModel : BRViewModel<BRRepository>() {
-    @Bindable
-    var k: String = ""
-        set(value) {
-            field = value
-            notifyPropertyChanged(BR.k)
-        }
+class CollectionVModel : SearchVModel() {
 
     fun setSaveDriver(arr: String) {
         //添加司机

+ 29 - 0
app/src/main/java/com/quansu/heifengwuliu/vmodel/SearchVModel.kt

@@ -0,0 +1,29 @@
+package com.quansu.heifengwuliu.vmodel
+
+import android.app.Activity
+import android.content.Intent
+import android.view.inputmethod.EditorInfo
+import androidx.databinding.Bindable
+import com.quansu.heifengwuliu.BR
+import com.quansu.heifengwuliu.utils.net.NetEngine
+import com.ysnows.base.base.BRRepository
+import com.ysnows.base.base.BRViewModel
+import com.ysnows.base.net.IResponse
+import io.reactivex.Observable
+
+open abstract class SearchVModel : BRViewModel<BRRepository>() {
+    @Bindable
+    var k: String = ""
+        set(value) {
+            field = value
+            notifyPropertyChanged(BR.k)
+        }
+
+    fun onAction(actionId: Int): Boolean {
+        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
+            firstReq()
+        }
+        return false;
+    }
+
+}

+ 7 - 15
app/src/main/java/com/quansu/heifengwuliu/widget/SearchView.kt

@@ -9,6 +9,8 @@ import android.widget.TextView
 import androidx.databinding.DataBindingUtil
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.databinding.WidgetSearchBinding
+import com.quansu.heifengwuliu.vmodel.CollectionVModel
+import com.quansu.heifengwuliu.vmodel.SearchVModel
 import com.ysnows.base.view.BView
 import com.ysnows.base.view.BaseView
 
@@ -17,30 +19,20 @@ import com.ysnows.base.view.BaseView
  *Created by shihuiyun
  *on 2020/9/16
  */
-class SearchView(context: Context, attrs: AttributeSet) :BaseLinearLayout(context,attrs) {
+class SearchView(context: Context, attrs: AttributeSet) : BaseLinearLayout(context, attrs) {
+    var viewModel: SearchVModel? = null
     private var binding: WidgetSearchBinding? = null
     private var view: BView? = null
+
     init {
         init(context)
-
     }
+
     private fun init(context: Context) {
         if (context is BaseView) {
             view = context as BView
         }
         binding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.widget_search, this, true)
-    }
-
-    fun getEtName(): EditText? {
-        return binding!!.etName
-    }
-
-    fun getIvDelete(): ImageView? {
-        return binding!!.ivDelete
-    }
-
-    fun getTvSearch(): TextView? {
-        return binding!!.tvSearch
-
+        binding?.vm = viewModel
     }
 }

+ 4 - 3
app/src/main/res/layout/activity_collection.xml

@@ -4,6 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools" >
 
     <data >
+
         <variable
             name="vm"
             type="com.quansu.heifengwuliu.vmodel.CollectionVModel" />
@@ -17,10 +18,10 @@
         <com.quansu.heifengwuliu.widget.SearchView
             android:id="@+id/search"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content">
-
-        </com.quansu.heifengwuliu.widget.SearchView>
+            android:layout_height="wrap_content"
+            app:vm="@{vm}" >
 
+        </com.quansu.heifengwuliu.widget.SearchView >
 
         <FrameLayout
             android:layout_width="match_parent"

+ 22 - 21
app/src/main/res/layout/widget_search.xml

@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:android="http://schemas.android.com/apk/res/android" >
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto" >
 
     <data >
 
+        <variable
+            name="vm"
+            type="com.quansu.heifengwuliu.vmodel.SearchVModel" />
+
     </data >
 
     <LinearLayout
@@ -11,7 +15,7 @@
         android:layout_height="wrap_content"
         android:focusable="true"
         android:focusableInTouchMode="true"
-        android:orientation="vertical">
+        android:orientation="vertical" >
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -21,7 +25,7 @@
             android:layout_marginRight="18dp"
             android:layout_marginBottom="18dp"
             android:gravity="center_vertical"
-            android:orientation="horizontal">
+            android:orientation="horizontal" >
 
             <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout
                 android:layout_width="0dp"
@@ -36,16 +40,14 @@
                 app:qmui_backgroundColor="@color/white"
                 app:qmui_borderColor="#BEBEBE"
                 app:qmui_borderWidth="@dimen/dp_1"
-                app:qmui_radius="@dimen/dp_4">
-
+                app:qmui_radius="@dimen/dp_4" >
 
                 <ImageView
                     android:layout_width="13dp"
                     android:layout_height="13dp"
-                    android:src="@drawable/stock_serch">
-
-                </ImageView>
+                    android:src="@drawable/stock_serch" >
 
+                </ImageView >
 
                 <EditText
                     android:id="@+id/et_name"
@@ -56,23 +58,22 @@
                     android:background="@null"
                     android:gravity="center_vertical"
                     android:hint="请输入要搜索的内容"
+                    android:text="@={vm.k}"
                     android:textColor="#2F2F31"
                     android:textColorHint="#929390"
-                    android:textSize="14sp"></EditText>
-
+                    android:textSize="14sp"
+                    app:on_action="@{(a,b,c)->vm.onAction(b)}" />
 
                 <ImageView
                     android:id="@+id/iv_delete"
                     android:layout_width="14dp"
                     android:layout_height="14dp"
                     android:layout_marginLeft="10dp"
-                    android:src="@drawable/stock_delete">
+                    android:src="@drawable/stock_delete" >
 
-                </ImageView>
-
-
-            </com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout>
+                </ImageView >
 
+            </com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout >
 
             <TextView
                 android:id="@+id/tv_search"
@@ -80,16 +81,16 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="18dp"
                 android:gravity="center|left"
+                android:onClick="@{v->vm.firstReq()}"
                 android:text="搜索"
                 android:textColor="#3274F6"
-                android:textSize="15sp">
-
-            </TextView>
+                android:textSize="15sp" >
 
-        </LinearLayout>
+            </TextView >
 
-    </LinearLayout>
+        </LinearLayout >
 
+    </LinearLayout >
 
 </layout >
 

+ 8 - 0
base/src/main/java/com/ysnows/base/binding/EditTextBindingAdapter.java

@@ -1,7 +1,10 @@
 package com.ysnows.base.binding;
 
+import android.view.KeyEvent;
 import android.view.View;
+import android.view.inputmethod.EditorInfo;
 import android.widget.EditText;
+import android.widget.TextView;
 
 import androidx.databinding.BindingAdapter;
 
@@ -14,4 +17,9 @@ public class EditTextBindingAdapter {
         }
     }
 
+    @BindingAdapter("on_action")
+    public static void setOnActionSearch(EditText view, TextView.OnEditorActionListener listener) {
+        view.setOnEditorActionListener(listener);
+    }
+
 }