Firebase에서 데이터를 가져 오는 중, Android에서 실행 한 후 화면이 공백으로 표시됨

Nov 23 2020

주요 활동:

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

DataClass

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 

오류가 발생하지 않지만 여전히 화면이 비어 있습니다. 실제로 null 데이터를 찾는 방법을 표시하고 있으며이 문제를 해결하는 방법을 알려줍니다.이 코드 어딘가에서 작은 실수를 저질렀다는 것을 알고 있습니다. .............................................

답변

SarveshHon Nov 23 2020 at 18:19

이 코드 교체

에서

mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

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

이 일을 바랍니다.