首页 > 解决方案 > 从 FireBase 中检索数据并在单击按钮时一一显示 CardView

问题描述

我正在开发一个测验应用程序,并希望在卡片视图中显示每个问题以及选项。我想一次显示一个卡片视图,然后单击按钮移动到下一个。我找到了使用 Recycler 视图检索所有卡片视图的方法。但我一次想要一个,这样我就可以计算结果。我使用 FireBase 作为后端数据服务器。将它们保存在回收商视图中计算结果也可以帮助我。谢谢!

我的 MainActivity.Java

package com.example.mmohsinsiddiqui.firetestapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mDataList;
    private DatabaseReference mDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String Main = "Seerat";
        mDatabase= FirebaseDatabase.getInstance().getReference().child(Main);//.child("Seerat");
        mDatabase.keepSynced(true);
        mDataList=(RecyclerView)findViewById(R.id.seeratRecyclerView);
        mDataList.setHasFixedSize(true);
        mDataList.setLayoutManager(new LinearLayoutManager(this));

    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter<GetData,BlogViewHolder> firebaseRecyclerAdapter= new FirebaseRecyclerAdapter<GetData, BlogViewHolder>
                (GetData.class,R.layout.data_card,BlogViewHolder.class,mDatabase) {
            @Override
            protected void populateViewHolder(BlogViewHolder viewHolder, GetData model, int position) {
                viewHolder.setHeading(model.getHeading());
                viewHolder.setDescription(model.getDescription());
                viewHolder.setOption1(model.getOption1());
                viewHolder.setOption2(model.getOption2());
                viewHolder.setOption3(model.getOption3());

                //viewHolder.setId(model.getId());
            }
        };
        mDataList.setAdapter(firebaseRecyclerAdapter);
    }

    public static class BlogViewHolder extends RecyclerView.ViewHolder{

        View mView;
        public BlogViewHolder(View itemView){
            super(itemView);
            mView=itemView;
        }
        public void setHeading(String title){
            TextView heading = (TextView)mView.findViewById(R.id.heading);
            heading.setText(title);
        }

        public void setDescription(String desc){
            TextView description = (TextView)mView.findViewById(R.id.description);
            description.setText(desc);
        }

        public void setOption1(String option1){
            RadioButton optiona = (RadioButton) mView.findViewById(R.id.option_a);
            optiona.setText(option1);
        }

        public void setOption2(String option2){
            RadioButton optionb = (RadioButton) mView.findViewById(R.id.option_b);
            optionb.setText(option2);
        }

        public void setOption3(String option3){
            RadioButton optionc = (RadioButton) mView.findViewById(R.id.option_c);
            optionc.setText(option3);
        }

        public int setId(int id){

            int check = id;
            return check;
        }

    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mmohsinsiddiqui.firetestapp.MainActivity">
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/seeratRecyclerView">

    </android.support.v7.widget.RecyclerView>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/seeratRecyclerView"
        android:onClick="showAnswer"
        android:text="CHECK"/>

</RelativeLayout>

标签: androidfirebasefirebase-realtime-database

解决方案


推荐阅读