如何从现有值增加++

问题描述 投票:0回答:1

我正在开发一个应用程序来跟踪冬季喂鸟器的数量。我使用 ++ 来递增并使用 -- 来递减。

当我尝试增加现有值时,增量会从零重新开始。例如,如果我的现有值为 4,并且我想添加 2,我应该能够单击增量 TextView 两次以获得值 6。相反,我必须单击六次。

我该如何解决这个问题?

这是我的代码。

更新活动

...

class  UpdateBirdActivity : AppCompatActivity() {

    //this right here is probably the problem   
    var totalcount : Int = 0
    var count : Int = 0
    var femalecount : Int = 0
    var malecount : Int = 0

    private var activityUpdateBirdBinding: ActivityUpdateBirdBinding? = null
    lateinit var viewModel: ViewModel
    var birdID = -1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        activityUpdateBirdBinding = DataBindingUtil.setContentView(
            this, R.layout.activity_update_bird)

        val database by lazy { KalamazooDatabase.getDatabase(application) }
        val kalamazooRepository by lazy { KalamazooRepository(database.getKalamazooDao()) }
        val viewModelFactory = ViewModelFactory(kalamazooRepository)
        viewModel = ViewModelProvider(this, viewModelFactory).get(ViewModel::class.java)

        val bird = intent.getStringExtra(AppConstants.BIRD_NAME)
        activityUpdateBirdBinding!!.tvBird.setText(bird)

        val totalcount = intent.getStringExtra(BIRD_TOTALCOUNT)
        activityUpdateBirdBinding!!.etTotalcount.setText(totalcount)

        val cnt  = intent.getStringExtra(BIRD_COUNT)
        activityUpdateBirdBinding!!.countText.setText(cnt)

        val femalecnt  = intent.getStringExtra(BIRD_FEMALECOUNT)
        activityUpdateBirdBinding!!.femalecountText.setText(femalecnt)

        val malecnt  = intent.getStringExtra(BIRD_MALECOUNT)
        activityUpdateBirdBinding!!.malecountText.setText(malecnt)

        birdID = intent.getIntExtra(AppConstants.BIRD_ID, -1)

        activityUpdateBirdBinding!!.btnAdd.setOnClickListener {
            val bird = activityUpdateBirdBinding!!.tvBird.text.toString()
            val totalcount = activityUpdateBirdBinding!!.etTotalcount.text.toString()
            val cnt = activityUpdateBirdBinding!!.countText.text.toString()
            val femalecnt = activityUpdateBirdBinding!!.femalecountText.text.toString()
            val malecnt = activityUpdateBirdBinding!!.malecountText.text.toString()
            val sdf = SimpleDateFormat("dd")
            val currentDateAndTime: String = sdf.format(Date())
            var updatedKalamazoo = Kalamazoo(bird, totalcount, cnt, femalecnt, malecnt, currentDateAndTime)
            updatedKalamazoo.id = birdID
            viewModel.updateBird(updatedKalamazoo)
            startActivity(Intent(applicationContext, MainActivity::class.java))
            this.finish()
        }
    }

    fun totalcountPlus(){
        totalcount ++
        val message = activityUpdateBirdBinding!!.etTotalcount
        message.text = "$totalcount"  }

    fun totalcountMinus(){
        totalcount --
        val message = activityUpdateBirdBinding!!.etTotalcount
        message.text = "$totalcount"  }

    fun count_onClickIncrement(view: View){//removing the view:View parameter breaks the app
        totalcountPlus()
        count ++
        val countmessage =activityUpdateBirdBinding!!.countText
        countmessage.text = "$count"    }

    fun count_onClickDecrement(view: View) {
        totalcountMinus()
        count --
        val countmessage =activityUpdateBirdBinding!!.countText
        countmessage.text = "$count"    }

    fun female_onClickIncrement(view: View) {
        totalcountPlus()
        femalecount ++
        val femalecountmessage =activityUpdateBirdBinding!!.femalecountText
        femalecountmessage.text = "$femalecount"    }

    fun female_onClickDecrement(view: View) {
        totalcountMinus()
        femalecount --
        val femalecountmessage =activityUpdateBirdBinding!!.femalecountText
        femalecountmessage.text = "$femalecount"    }

    fun male_onClickIncrement(view: View) {
        totalcountPlus()
        malecount ++
        val malecountmessage =activityUpdateBirdBinding!!.malecountText
        malecountmessage.text = "$malecount"    }

    fun male_onClickDecrement(view: View) {
        totalcountMinus()
        malecount --
        val malecountmessage =activityUpdateBirdBinding!!.malecountText
        malecountmessage.text = "$malecount"    }
}

...

更新xml

...

 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:tools="http://schemas.android.com/tools"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical"
         android:gravity="center_horizontal"
         android:background="@color/white"
         tools:context=".ui.activity.UpdateBirdActivity">
 
         <androidx.appcompat.widget.Toolbar
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="?attr/actionBarSize"
             android:background="@color/color_ash"
             android:elevation="4dp"
             android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
             app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
 
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center"
                 android:textSize="@dimen/sp_18"
                 android:textColor="@color/white"
                 android:text="Bird"/>
         </androidx.appcompat.widget.Toolbar>
 
         <TextView
             android:id="@+id/tv_bird"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:hint="Bird Name"
             android:layout_gravity="start"
             android:layout_marginBottom="10dp"
             android:layout_marginStart="20dp"
             android:textColor="#5C615D"
             android:textStyle="bold"
             android:textSize="24sp"/>
 
         <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="vertical">
 
     <!--    //totalcount-->
             <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
             android:layout_marginStart="20dp"
             android:layout_gravity="center_vertical">
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:textColor="@color/black"
                     android:text="Total Count: " />
 
                 <TextView
                     android:id="@+id/et_totalcount"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:textColor="@color/black"
                     android:hint="0" />
 
         </LinearLayout>
 
     <!--    //count-->
             <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
             android:layout_marginStart="20dp"
             android:layout_gravity="center_vertical">
 
                 <TextView
                     android:layout_width="120dp"
                     android:layout_height="wrap_content"
                     android:layout_marginBottom="10dp"
                     android:gravity="end"
                     android:textColor="@color/black"
                     android:text="Count: " />
 
                 <TextView
                     android:id="@+id/countText"
                     android:layout_width="20dp"
                     android:layout_height="wrap_content"
                     android:layout_marginBottom="10dp"
                     android:gravity="end"
                     android:textColor="@color/black"
                     android:hint="0" />
 
                  <TextView
                      android:id="@+id/tv_countViewIncrement"
                      android:layout_width="10dp"
                      android:layout_height="wrap_content"
                      android:layout_marginStart="10dp"
                      android:layout_marginEnd="10dp"
                      android:foreground="@drawable/baseline_arrow_upward_24"
                      android:onClick="count_onClickIncrement" />
 
                  <TextView
                      android:id="@+id/tv_counttextViewDecremen1"
                      android:layout_width="10dp"
                      android:layout_marginStart="10dp"
                      android:layout_marginEnd="10dp"
                      android:layout_height="wrap_content"
                      android:foreground="@drawable/baseline_arrow_downward_24"
                      android:onClick="count_onClickdecrement" />
 
              </LinearLayout>
 
      <!--    //female count-->
             <LinearLayout
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:layout_marginStart="20dp"
                  android:layout_gravity="center_vertical">
 
                 <TextView
                     android:layout_width="120dp"
                     android:layout_height="wrap_content"
                     android:gravity="end"
                     android:layout_marginBottom="10dp"
                     android:textColor="@color/black"
                     android:text="Female Count: " />
 
                 <TextView
                     android:id="@+id/femalecountText"
                     android:layout_width="20dp"
                     android:layout_height="wrap_content"
                     android:gravity="end"
                     android:layout_marginBottom="10dp"
                     android:textColor="@color/black"
                     android:hint="0" />
 
                  <TextView
                      android:id="@+id/tv_femaleViewIncrement"
                      android:layout_width="10dp"
                      android:layout_height="wrap_content"
                      android:layout_marginStart="10dp"
                      android:layout_marginEnd="10dp"
                      android:foreground="@drawable/baseline_arrow_upward_24"
                      android:onClick="female_onClickIncrement"/>
      
                  <TextView
                      android:id="@+id/tv_femaleViewDecrement"
                      android:layout_width="10dp"
                      android:layout_marginStart="10dp"
                      android:layout_marginEnd="10dp"
                      android:layout_height="wrap_content"
                      android:foreground="@drawable/baseline_arrow_downward_24"
                      android:onClick="female_onClickdecrement" />
 
              </LinearLayout>
 
     <!--    //male count-->
             <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
             android:layout_marginStart="20dp"
             android:layout_gravity="center_vertical">
 
                 <TextView
                     android:layout_width="120dp"
                     android:layout_height="wrap_content"
                     android:gravity="end"
                     android:layout_marginBottom="10dp"
                     android:textColor="@color/black"
                     android:text="Male Count: " />
 
                 <TextView
                     android:id="@+id/malecountText"
                     android:layout_width="20dp"
                     android:layout_height="wrap_content"
                     android:gravity="end"
                     android:layout_marginBottom="10dp"
                     android:textColor="@color/black"
                     android:hint="0" />
 
                  <TextView
                      android:id="@+id/tv_maleViewIncrement"
                      android:layout_width="10dp"
                      android:layout_height="wrap_content"
                      android:layout_marginStart="10dp"
                      android:layout_marginEnd="10dp"
                      android:foreground="@drawable/baseline_arrow_upward_24"
                      android:onClick="male_onClickIncrement"/>
 
                  <TextView
                      android:id="@+id/tv_maleViewDecrement"
                      android:layout_width="10dp"
                      android:layout_marginStart="10dp"
                      android:layout_marginEnd="10dp"
                      android:layout_height="wrap_content"
                      android:foreground="@drawable/baseline_arrow_downward_24"
                      android:onClick="male_onClickdecrement" />
 
              </LinearLayout>
         </LinearLayout>
 
         <Button
             android:id="@+id/btn_add"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:backgroundTint="@color/color_ash"
             android:text="Update"
             android:textSize="24sp"/>
 
     </LinearLayout>
 
 </layout>

...

android kotlin increment auto-increment
1个回答
0
投票

这个问题就解决了。我放弃了所有试图弄清楚为什么我的代码无法工作的尝试,并在 github.com/kojofosu/Quantitizer 上找到了一个库,它完全可以满足我的需要。谢谢 Kojo Fosu Bempa Edue。

仅供参考

xml

        <com.mcdev.quantitizerlibrary.NoValueQuantitizer
            android:id="@+id/np_Count"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="20dp" />s

活动

nvq_cnt.apply {
.
.//code removed for clarity, and because somebody 
.//out there thinks I post too much code
.
    setQuantitizerListener(object : QuantitizerListener {
        override fun onDecrease() {
            val cnt = activityUpdateBirdBinding!!.tvCount
            val a = cnt.text.toString().toInt()
            val b = 1
            cnt.text = (a - b).toString()
            totalCount() }
        override fun onIncrease() {
            val cnt = activityUpdateBirdBinding!!.tvCount
            val a = cnt.text.toString().toInt()
            val b = 1
            cnt.text = (a + b).toString()
            totalCount() }
        override fun onValueChanged(value: Int) { }
    })
}

依赖性

implementation ("com.github.kojofosu:Quantitizer:1.6.8")

由于我正在使用 AS 的 Hedgehog 版本,因此需要添加 maven(url = "https://jitpack.io") 到 settings.gradle.kts 中的 dependencyResolutionManagement

设置.gradle.kt

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven(url = "https://jitpack.io")    <-this here
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.