Beim Abrufen von Daten aus der Firebase wird der Bildschirm nach der Ausführung in Android leer angezeigt

Nov 23 2020

Hauptaktivität:

public class MainActivity extends AppCompatActivity {
   private RecyclerView mRecyclerView;
   private FirebaseAdapter mAdapter;
    private static final String TAG = "MainActivity";

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

        mRecyclerView = (RecyclerView)findViewById(R.id.recyclerview);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        FirebaseRecyclerOptions<DataClass> options =
                new FirebaseRecyclerOptions.Builder<DataClass>()
                        .setQuery(FirebaseDatabase.getInstance().getReference().child("Users"), DataClass.class)
                        .build();
        mAdapter = new FirebaseAdapter(options);
        mRecyclerView.setAdapter(mAdapter);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
    }
    @Override
    protected void onStart() {
        super.onStart();
        mAdapter.startListening();
    }
    @Override
    protected void onStop() {
        super.onStop();
        mAdapter.stopListening();
    }
}

FirebaseAdapter

public class FirebaseAdapter extends FirebaseRecyclerAdapter<DataClass,FirebaseAdapter.MyviewHolder> {
    private static final String TAG = "FirebaseAdapter";
    public FirebaseAdapter(@NonNull FirebaseRecyclerOptions<DataClass> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull MyviewHolder holder, int position, @NonNull DataClass model) {
      holder.name.setText(model.getName());
      holder.age.setText(model.getAge());
        Log.d(TAG, "onBindViewHolder: Now Bind method executing");
    }

    @NonNull
    @Override
    public MyviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View v=  layoutInflater.inflate(R.layout.row_represent,parent,false);
        MyviewHolder v1 = new MyviewHolder(v);
        Log.d(TAG, "onCreateViewHolder: Now on create method executing");
        return v1;
    }
    
    public static class MyviewHolder extends RecyclerView.ViewHolder{
        TextView name;
        TextView age;
        public MyviewHolder(@NonNull View itemView) {
            super(itemView);
            name = (TextView)itemView.findViewById(R.id.names);
            age = (TextView) itemView.findViewById(R.id.age);
        }
    }
}

Datenklasse

public class DataClass {

    private  String name;
       private String age;

       public DataClass(){

       }

    public DataClass(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getAge() {
        return age;
    }
}



 doubt in this parts
     public DataClass(String name, String age) {
                this.name = name;
                this.age = age;
            }
          protected void onBindViewHolder(@NonNull MyviewHolder holder, int position, @NonNull DataClass model) {
              holder.name.setText(model.getName());
              holder.age.setText(model.getAge());
                Log.d(TAG, "onBindViewHolder: Now Bind method executing");
            }
because showing me that constructor never used 

Ich erhalte keine Fehler, aber mein Bildschirm ist immer noch leer. Eigentlich werden Nulldaten angezeigt, wie man sie findet, und die Leute sagen mir, wie ich dieses Problem lösen kann. Ich weiß, dass ich irgendwo in diesem Code einen kleinen Fehler gemacht habe. Helfen Sie mir, das Problem zu beheben. Danke .............................................

Antworten

SarveshHon Nov 23 2020 at 18:19

Ersetzen Sie diesen Code

Von

mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

Zu

RecyclerView.LayoutManager layoutManager;
layoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
mRecyclerView.setLayoutManager(layoutManager);

Hoffe diese Arbeit.