【问题标题】:How to override items in ArrayList on Android如何在 Android 上覆盖 ArrayList 中的项目
【发布时间】:2021-04-04 01:52:42
【问题描述】:

在我的应用程序中,我应该向服务器发送一些数据。
这些数据由用户生成。
我应该将此项目添加到 ArrayList,然后使用 Retrofit 发送到 Body 上的服务器。

我写下面的代码,我可以添加项目到ArrayList
但是用户可能会更新这些数据。
例如:第一次设置为 3,另一次设置为 5!

但是给我看两个项目!

我想覆盖 5 到 3!

我的原木猫:

E/evaluationLog: [Evaluation(evaluationId=4, score=3), Evaluation(evaluationId=3, score=4), Evaluation(evaluationId=4, score=1), Evaluation(evaluationId=4, score=4)]

我有 四个 项,evaluationId=4三个 项,evaluationId= 有 一个 3.

我想在 evaluationId=4 上覆盖这 3 个项目并设置最后一个项目!

我只想给我看这样的:

E/evaluationLog: [Evaluation(evaluationId=3, score=4), Evaluation(evaluationId=4, score=4)]

我的代码:

    private val evaluationSubmitScoreList: MutableList<BodyModelSubmitRate.Evaluation> = mutableListOf()
    
        @Subscribe(threadMode = ThreadMode.MAIN)
        fun onEvaluation(event: EventsEvaluationStaff.OnEvaluation) {
                evaluationSubmitScoreList.add(BodyModelSubmitRate.Evaluation(event.id, event.score))

}

使用下面的代码,我可以看到我的列表项:

submit.setOnClickListener {
            if (!isEmptyString(comment.text.toString())) {
                Log.e("evaluationLog", evaluationBody.evaluations.toString())
            } else {
                comment.error = getString(R.string.notEmptyThisField)
            }
        }

我该怎么办?

【问题讨论】:

    标签: android list kotlin arraylist


    【解决方案1】:

    这些项目被添加到列表中,因为您正在使用evaluationSubmitScoreList.add() 函数。您可能需要根据传递的 event.id 搜索列表中的项目并替换该索引处项目的值。例如:

    @Subscribe(threadMode = ThreadMode.MAIN)
    fun onEvaluation(event: EventsEvaluationStaff.OnEvaluation) {
    int index = -1
    for(int i=0; i<evaluationSubmitScoreList.size; i++){
        BodyModelSubmitRate.Evaluation eval = evaluationSubmitScoreList[i];
        if(eval.id == event.id){
            index=i;
            break;
        }
    }
    if(index== -1){
          evaluationSubmitScoreList.add(BodyModelSubmitRate.Evaluation(event.id, event.score))
    } else {
         evaluationSubmitScoreList.set(index, BodyModelSubmitRate.Evaluation(event.id, event.score));
    }
    }
    

    【讨论】:

    • 谢谢,但我不知道哪个项目是重复的!你能把代码发给我吗?
    • 感谢我的朋友更新您的代码。但我不知道如何找到重复的索引!害羞地帮我做这个?
    • 我已经更新了代码。这样你就可以检查列表中的唯一值并更新它
    • 谢谢亲爱的,但不能正常工作!请查看此日志:E/evaluationLog: [Evaluation(evaluationId=17, score=2)] E/evaluationLog: [Evaluation(evaluationId=17, score=2), Evaluation(evaluationId=3, score=4)] E/evaluationLog: [Evaluation(evaluationId=17, score=2), Evaluation(evaluationId=3, score=4), Evaluation(evaluationId=5, score=3)] E/evaluationLog: [Evaluation(evaluationId=17, score=2), Evaluation(evaluationId=17, score=4), Evaluation(evaluationId=5, score=3)]
    • 休息一下试试;检查更新的代码。
    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2023-04-08
    • 2015-02-05
    • 2016-10-27
    相关资源
    最近更新 更多