添加新项时,recyclerview中的天文钟表位置不会更改

时间:2018-12-07 06:40:15

标签: android android-recyclerview

在我的recyclerview布局中,我有一个天文台表,“开始”按钮和一个数字,该数字显示了我的设备编号,项目按设备编号排序。当我在位置0添加编号为2的项目并单击开始按钮时,天文台运行正常。但是,当我添加编号为= 1的其他recyclerview项目时,它设置在位置0中,而之前的项目设置在位置1中,而天文钟在位置0上继续!

@Override
    public void onBindViewHolder(@NonNull final ControllerViewHolder holder, final int position) {
        final DataModelDevice dataModelDevice = dataModelDevices.get(position);
        final DataModelSetUpDevice dataModelSetUpDevice = dataModelSetUpDevices.get(position);

        holder.textViewcountOfController.setText(String.valueOf(dataModelSetUpDevice.getCountOfController()));
        holder.textViewDeviceNumber.setText(String.valueOf(dataModelDevice.getDeviceNumber()));

        final long[] timeWhenStopped = {dataModelSetUpDevice.getTimeMiliSeconds()};
        holder.textViewStartTimer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                holder.chronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped[0]);
                holder.chronometer.start();
                holder.chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
                    @Override
                    public void onChronometerTick(Chronometer chronometer) {
                        long time = SystemClock.elapsedRealtime() - chronometer.getBase();
                        int h = (int) (time / 3600000);
                        int m = (int) (time - h * 3600000) / 60000;
                        int s = (int) (time - h * 3600000 - m * 60000) / 1000;
                        chronometer.setText(String.format(Locale.getDefault(), "%02d:%02d:%02d", h, m, s));
                        dataModelSetUpDevice.setTimeMiliSeconds(time);
                    }
                });
            }
        });}

在那之后,如果我将位置0的项目移开,则计时器将在项目2中继续运行。这意味着,当我第一次将计时器置于位置1时,计时器的位置不会改变。

0 个答案:

没有答案