如何从其他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中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
Android RecyclerView 绘制流程及Recycler缓存
Android RecyclerView 绘制流程及Recycler缓存