如何从其他recyclerview以recyclelerview接收数据?

时间:2018-05-08 12:54:42

标签: android android-intent android-recyclerview bundle recycler-adapter

首先让我说我是Android的初学者,我的英语基本,我可以理解答案,但也许我的写作方式不正常或正确。

所以,放开我的问题:

我正在为一个课程做一个项目,我已经用#34;宠物"做了第一次回收,每个宠物都有一个按钮,你可以给#34;喜欢"而这些"喜欢"将保存在textview中。

我有第二个回收视图,类似于第一个,第二个将显示我给的最后5只宠物"喜欢"在第一个Recyclerview中。

我需要在第二个回收者视图中显示"喜欢"我在第一次回收评估中给了每只宠物。我怎么能这样做?我如何在recyclerview的每个元素中接收这些数据?我需要第二个适配器或另一个arrayList吗?

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

下面我会看到一些代码:

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);
    }

谢谢你们,如果你能帮助我,对不起我用英语写的坏方法。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

根据我对你的问题的理解。我正确,这两个recyclerViews在单独的活动中。如果是这样,您可以将数据从“回收者”视图传递到新活动,在其中您可以根据从上一个活动中收到的数据来设置“回收者视图”数据。现在,由于两个回收者视图使用的数据类型都不同。您需要使用两个单独的回收站视图。