如何从其他recyclerview接收recyclerview中的数据?

Posted

技术标签:

【中文标题】如何从其他recyclerview接收recyclerview中的数据?【英文标题】:How to receive data in recyclerview from other recyclerview? 【发布时间】:2018-10-18 10:31:10 【问题描述】:

首先假设我是android初学者,我的英语很基础,我可以理解答案,但可能我的写作方式不正常或不正确。

那么,让我们来回答我的问题:

我正在为一门课程做一个项目,我已经用“宠物”完成了第一个回收视图,每个宠物都有一个按钮,您可以在其中给予“喜欢”,这些“喜欢”将保存在文本视图中。

我有第二个 recyclerview,类似于第一个,第二个将显示我在第一个 recyclerview 中“喜欢”的最后 5 只宠物。

我需要在第二个 recyclerview 中显示我在第一个 recyclerview 中给每只宠物的“喜欢”。我怎么能做到这一点?如何在 recyclerview 的每个元素中接收这些数据?我需要第二个适配器还是另一个 arrayList?

我的代码运行良好,直到我尝试接收数据,然后应用程序崩溃,我尝试了很多方法,但我不确定我做错了什么。 (我对 recyclerviews 有这个问题,我只是看到与其他没有 recyclerview 的活动不一样)。

下面我让你看一些代码:

MainActivity.class 中的 onCreate 内部

public void inicializarLista()

        mascotasList = new ArrayList<Mascotas>();

        mascotasList.add(new Mascotas(R.drawable.loro,"Coti el loro"));
        mascotasList.add(new Mascotas(R.drawable.hamster,"El Ghamster"));
        mascotasList.add(new Mascotas(R.drawable.tortuga,"Turtle Ninja"));
        mascotasList.add(new Mascotas(R.drawable.perro,"Mochi"));
        mascotasList.add(new Mascotas(R.drawable.conejo,"Bonny"));
    

     public MascotasAdapter adapter;
     public void inicializarAdaptador()
        adapter = new MascotasAdapter(this, mascotasList);
        mascotaRecycler.setAdapter(adapter);
    

    public void cliclearBoton()
        ImageButton favoritas = findViewById(R.id.favoritasCinco);

        favoritas.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                TextView cantLikes = findViewById(R.id.tvCantidad);
                String dlikes = cantLikes.getText().toString();
                Intent i = new Intent(MainActivity.this, MascotasFavoritas.class);
                i.putExtra("loslikes", dlikes);
                startActivity(i);
            
        );
    

在 MascotaAdapter.class 中我的 onBindViewHolder 下方

public void onBindViewHolder(final MascotasViewHolder mascotasHolder, final int position) 

        final Mascotas mascotasList = mascotas.get(position);

        mascotasHolder.imFoto.setImageResource(mascotasList.getIvFoto());
        mascotasHolder.textNombre.setText(mascotasList.getNombre());

        mascotasHolder.ibDarLike.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                Snackbar.make(v,"Diste like a "+ mascotasList.getNombre(),Snackbar.LENGTH_SHORT).show();
                int plusLike = Integer.parseInt(mascotasHolder.textCantidadLikes.getText().toString());
                mascotasHolder.textCantidadLikes.setText(String.valueOf(plusLike + 1));
            
        );
    
 EjecutarAmpliar

在我在 MascotaFavoritas.class 的 onCreate 中的函数下方,(这里我想接收数据)。

 void inicializarFavoritas()
        favoritasList = new ArrayList<Mascotas>();

        favoritasList.add(new Mascotas(R.drawable.perro,"Mochi"));
        favoritasList.add(new Mascotas(R.drawable.conejo,"Bonny"));
        favoritasList.add(new Mascotas(R.drawable.loro,"Coti el loro"));
        favoritasList.add(new Mascotas(R.drawable.hamster,"El Ghamster"));
        favoritasList.add(new Mascotas(R.drawable.tortuga,"Turtle Ninja"));

    

    public MascotasAdapter adapter;
    public void inicializarAdaptador()
        adapter = new MascotasAdapter(this, favoritasList);
        favoritasRecycler.setAdapter(adapter);
    
    public void recibirLikes()
        TextView receptorLikes = findViewById(R.id.tvCantidad);
        Bundle parametros = this.getIntent().getExtras();
        String datoLike = parametros.getString("loslikes");
        receptorLikes.setText(datoLike);
    

谢谢你们,如果你们能帮助我,也很抱歉我用英语写的不好。感谢您的帮助。

【问题讨论】:

数据保留在您的数据源中而不是在 recyclerview 中,将您的数据源用于您的回收器视图 【参考方案1】:

根据我从您的问题中了解到的情况。这两个 recyclerViews 是在不同的活动上,我是正确的。如果是这样,您可以将数据从回收者视图传递到新活动,您可以在其中根据您从上次活动中收到的内容设置回收者视图数据。现在,由于两个回收器视图使用的数据类型不同。您需要使用两个单独的回收站视图。

【讨论】:

以上是关于如何从其他recyclerview接收recyclerview中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView未显示已解析的GSON数据

Android RecyclerView 绘制流程及Recycler缓存

Android RecyclerView 绘制流程及Recycler缓存

如何突出显示 Recycler View 的选定项目?

使用 Recycler View 时如何在 Text To Speech 中实现错误处理

如何仅显示从当前位置到水平 RecyclerView 的一项?