简体   繁体   English

单击 RecyclerView 后,使用 Firebase 实时数据库填充详细信息活动

[英]Populate details activity with Firebase Real Time Database after click on RecyclerView

i want to click in my recyclerview and open a new activity to show the datails.我想点击我的 recyclerview 并打开一个新活动来显示数据。 Ultil now i have accomplished to open the activity and show the values "interno" and "siniiga" with the next intent.直到现在我已经完成了打开活动并显示值“interno”和“siniiga”的下一个意图。 how can i get "madre and padre" values from firebase?我如何从 firebase 获得“madre and padre”值? applying the method to add father and mother, then I will use it for the rest of the values that the xml shows.应用添加父亲和母亲的方法,然后我将它用于 xml 显示的值的 rest。 excuse my horrible code.请原谅我可怕的代码。 if someone know a different method, let me know如果有人知道不同的方法,请告诉我

attached code and images.附上代码和图片。

Main Activity主要活动

    RecyclerView rv;
    List<cow> vacas;
    adapter adapter;
    ImageButton mbuttoninf;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rv = (RecyclerView) findViewById(R.id.recyclerViewGirdView);
        rv.setLayoutManager(new LinearLayoutManager(this));
        vacas = new ArrayList<>();


        FirebaseDatabase database = FirebaseDatabase.getInstance();

        adapter = new adapter(vacas);
        rv.setAdapter(adapter);


        database.getReference("Vacas").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                vacas.removeAll(vacas);
                for (DataSnapshot snapshot1 :
                        snapshot.getChildren()) {
                    cow vaca = snapshot1.getValue(cow.class);
                    vacas.add(vaca);
                }
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

    }

cow

    String interno;
    String siniiga;
    String ulr;
    String madre;
    String padre;


    public cow() {
    }

    public cow(String interno, String siniiga, String ulr, String madre, String padre) {
        this.interno = interno;
        this.siniiga = siniiga;
        this.ulr = ulr;
        this.madre = madre;
        this.padre = padre;
    }


    public String getInterno() {
        return interno;
    }

    public void setInterno(String interno) {
        this.interno = interno;
    }

    public String getSiniiga() {
        return siniiga;
    }

    public void setSiniiga(String siniiga) {
        this.siniiga = siniiga;
    }

    public String getUlr() {
        return ulr;
    }

    public void setUlr(String ulr) {
        this.ulr = ulr;
    }

    public String getMadre() {
        return madre;
    }

    public void setMadre(String madre) {
        this.madre = madre;
    }

    public String getPadre() {
        return padre;
    }

    public void setPadre(String padre) {
        this.padre = padre;
    }
}

Adapter适配器

    List<cow> vacas;
    Context context;


    public adapter(List<cow> vacas) {
        this.vacas = vacas;
    }

    @NonNull
    @Override
    public cowviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_vaca,parent,false);
        cowviewHolder holder = new cowviewHolder(v);
        return holder;

    }

    @Override
    public void onBindViewHolder(@NonNull final cowviewHolder holder, final int position) {
        final cow vacaslist = vacas.get(position);
        holder.textViewinterno.setText(String.valueOf(vacaslist.interno));
        holder.textViewsiniiga.setText(String.valueOf(vacaslist.siniiga));
        Glide.with(holder.imageviewrec.getContext()).load(vacaslist.getUlr()).into(holder.imageviewrec);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(v.getContext(),detailactivity.class);
                intent.putExtra("keyint", vacaslist.getInterno());
                intent.putExtra("keysin", vacaslist.getSiniiga());
                v.getContext().startActivity(intent);
            }
        });



    }

    @Override
    public int getItemCount() {

        return vacas.size();
    }

    public static class cowviewHolder extends RecyclerView.ViewHolder {
        TextView textViewinterno, textViewsiniiga, tvmadre, tvpadre;
        ImageView imageviewrec;


        public cowviewHolder(@NonNull View itemView) {
            super(itemView);
            textViewinterno = itemView.findViewById(R.id.interno);
            textViewsiniiga = itemView.findViewById(R.id.siniiga);
            imageviewrec = itemView.findViewById(R.id.imgrec);
            tvmadre = itemView.findViewById(R.id.tvmadre);
            tvpadre = itemView.findViewById(R.id.tvpadre);

        }


    }

detailsactivity详情活动



   TextView textView;
   @Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.informationfire);

       TextView tvinterno = (TextView) findViewById(R.id.tvinterno);
       TextView tvsiniiga = (TextView) findViewById(R.id.tvsiniiga);


       String vinterno = "";
       String vsiniiga = "";



       Bundle extras = getIntent().getExtras();
       if (extras !=null);
       vinterno = extras.getString("keyint");
       vsiniiga = extras.getString("keysin");
       
       tvinterno.setText(vinterno);
       tvsiniiga.setText(vsiniiga);
       
   }
   
}

firebase firebase

enter image description here在此处输入图像描述

and the xml for details和 xml 了解详情

enter image description here在此处输入图像描述

when you are getting data from firebase you saving that data in a Object and then add that object to list, so your list contains objects, so you can pass through the intents same way as you are doing others.当您从 firebase 获取数据时,您将该数据保存在 Object 中,然后将 object 添加到列表中,因此您的列表包含对象,因此您可以像执行其他操作一样传递意图。

    holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(v.getContext(),detailactivity.class);
                    intent.putExtra("keyint", vacaslist.getInterno());
                    intent.putExtra("keysin", vacaslist.getSiniiga());
                    intent.putExtra("madre", vacaslist.getMadre());
                    intent.putExtra("padre", vacaslist.getPadre());
                    v.getContext().startActivity(intent);
                }
            });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM