当前位置: 首页 > 知识库问答 >
问题:

如何刷新recyclerview适配器以显示池线程进度

常永长
2023-03-14

我在线程池中有一个进程列表,我在recycler视图的每个项目中显示进程的进度,我需要刷新适配器以显示队列中的新进程处理,但我唯一能做的就是转到另一个视图并返回。

我如何刷新适配器来实时查看一个进程如何结束和另一个进程如何开始,而不需要转到另一个视图并返回到适配器视图。

这是我的回收站视图适配器类的内部线程,它负责更新进度条。

if (GetSet.getListProcesoCierre().size() > 0 ) {
            String codigoOdtAsigSubida=GetSet.getListProcesoCierre().get(0).getCODIGOASIGNACIONEMG();
            String codigooDTASIG=obEmgOdtAsignacion.getCODIGOASIGNACIONEMG();
           if(codigoOdtAsigSubida.equals(codigooDTASIG)){
               holder.progressBar.setVisibility(View.VISIBLE);
               Handler handler = new Handler();
               handler.postDelayed(new Runnable() {
                   int progreso = 0;
                   String fase = "";
                   public void run() {
                     try{
                         progreso = GetSet.getListProcesoCierre().get(0).conexionService.getPorcentageProgreso();
                         fase = GetSet.getListProcesoCierre().get(0).conexionService.getFase();
                     }catch (Exception e){
                         e.printStackTrace();
                     }
                       holder.progressBar.setProgress(progreso);
                       holder.envioDatosmensaje.setText("" + progreso + "% - " + fase);
                       if (progreso <100) {
                           handler.postDelayed(this, 1000);
                       }else {
                           holder.txt_odt_estado.setText("CERRADO COMPLETAMENTE");
                           holder.txt_odt_estado.setTextColor(Color.parseColor("#2ECC71"));
                           holder.btn_cerrar_subir.setVisibility(View.GONE);
                           holder.ic_reporte_guardado.setVisibility(View.GONE);
                           GetSet.setListProcesoCierre(new ArrayList<>());
                           Boolean envioSegundoPlano = SplashScreen.sharedPref2.getBoolean("EnvioSegundoPlano", false);
                           // función a ejecutar
                           if (envioSegundoPlano && GetSet.getListProcesoCierre().size()==0) {
                               Funciones funciones = new Funciones(ctx);
                               funciones.verificarOdtsEnvio();// here I call for the next process in the queue
                              // notify();
                           }
                       }
                   }
               }, 1000);
           }
        }

共有1个答案

农弘毅
2023-03-14

看看这对你有没有用

每当您想要更新< code > recycle view 时:

new Handler(Looper.getMainLooper()).post(() ->
    recyclerView.getAdapter().notifyDataSetChanged()
);
 类似资料:
  • 问题内容: 我正在做一个项目。它只是显示任务列表并向其中添加新任务。我有3个班级。一种用于添加,一种用于查看,一种用于保存所有信息(或者我认为)。 我的列表中已经有2个任务,它们显示正确。 问题是,当我 添加 新任务时,它不会在视图中显示。我尝试了许多可能的解决方案: 只需将项目添加到列表 创建一个新列表,其中包含旧列表中的项目并重建适配器; 使用沿着与附加()命令; 等等 这是我的代码,有点混乱

  • > 从创建的片段中更新,将新数据设置为adapter,然后调用;但没有奏效。 像其他人一样创建一个新适配器,它对他们起作用,但对我没有任何改变: 在中创建一个更新数据的方法,如下所示: 问题是gridView的布局如下所示: 然后我只是删除了并将作为父布局。

  • 试图弄清楚更新的适配器有什么问题。 在我得到一个新的产品列表后,我尝试: > 从创建的片段中更新,将新数据设置到adapter,然后调用;但没有奏效。 像其他人一样创建一个新适配器,它对他们有效,但对我没有任何改变: 在中创建一个更新数据的方法,如下所示: 然后每当我想要更新数据列表时,我就调用这个方法;但没有奏效。 检查是否可以以任何方式修改recyclerView,并且我尝试至少删除一个项目:

  • 我用碎片制作了一个mediaplayer应用程序;歌曲、专辑、艺术家、流派、播放列表 这是我的一个片段中的代码,我将以艺术家为例 在我的initRecyClaire View()方法中,我有一个名为“项目”的数组列表,其中包含歌曲艺术家。Main.songs.get艺术家- 现在,当用户点击一个艺术家时,另一个活动将启动ListSong sActivity.java 这是类中的代码ListSong

  • 我想要一个recyclerview,当第一个应用程序打开时,然后在创建时从服务器获取一些数据,当向上滚动时,会显示recyclerview下方的进度条,当向上滚动到服务器时再次点击URL,并在先前获取的数据下方获取更多数据。但我知道当我第二次点击URL时,它会刷新页面,并在第二次点击时只显示从服务器获取的数据,但我想要第一次和第二次点击的响应。 对不起,我说英语 以下是我的主要活动代码: }

  • 我正在制作一个音乐播放器应用程序,其中我正在使用一个加载器将歌曲数据加载到适配器,该适配器将使用一个RecyclerView显示。然而,我得到了一个奇怪的错误,我的适配器方法不能工作。只调用适配器的构造函数方法。我还得到了“没有连接适配器;跳过布局”,尽管在stack Overflow中浏览了所有可用的解决方案。 需要注意的几点: 我已经尝试了recyclerview中“未附加适配器;跳过布局”(