【发布时间】:2019-05-04 13:48:48
【问题描述】:
我想在 parentsHomeActivity 中显示注册历史记录,所有这些数据都将保存在 firebase 数据库中。我创建了适配器编码以及 recent_registration_list_layout.xml 以仅显示 2 个属性:-
学生姓名(全名)
已注册的学费名称(tuitionName)。
没有红色错误、崩溃或任何 logcat。我遇到的问题是,我的适配器没有显示在我的应用程序中。真的希望有人能教我,Android Studio 的新手。提前致谢。
数据库结构如下图,我只想显示红圈属性:-
适配器编码如下:-
public class RegistrationHistoryAdapter extends RecyclerView.Adapter<RegistrationHistoryAdapter.ChildrenViewHolder>
{
private Context mCtx;
private List<StudentRegistration> childrenList;
public RegistrationHistoryAdapter(Context mCtx, List<StudentRegistration> childrenList)
{
this.mCtx = mCtx;
this.childrenList = childrenList;
}
@NonNull
@Override
public ChildrenViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.recent_registration_list_layout, parent, false);
return new ChildrenViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ChildrenViewHolder holder, final int position)
{
final StudentRegistration studentRegistration = childrenList.get(holder.getAdapterPosition());
holder.tuitioNameView.setText(studentRegistration.getTuitioname());
holder.studNameView.setText(studentRegistration.getFullname());
}
@Override
public int getItemCount() {
return childrenList.size();
}
class ChildrenViewHolder extends RecyclerView.ViewHolder
{
TextView tuitioNameView, studNameView;
CardView childrenLayout;
public ChildrenViewHolder(View itemView)
{
super(itemView);
tuitioNameView = itemView.findViewById(R.id.tvTuitionName);
studNameView = itemView.findViewById(R.id.tvFullName);
childrenLayout = itemView.findViewById(R.id.cvChildren);
}
}
}
parentsHomeActivity 编码如下:-
databaseReference.child("Student Registration").child(mAuth.getUid()).addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
//Iterating through all the values in database
mChildrenList = new ArrayList<>();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
{
StudentRegistration studentRegistration = postSnapshot.getValue(StudentRegistration.class);
mChildrenList.add(0, studentRegistration);
}
//Creating adapter
mAdapters = new RegistrationHistoryAdapter(getApplicationContext(), mChildrenList);
//Adding adapter to recyclerview
mRecyclerView.setAdapter(mAdapters);
mAdapters.notifyItemInserted(0);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
}
});
//other method
mRecyclerView.setHasFixedSize(true); //set fixed size for element in recycler view
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
Recycleview xml 布局如下所示:-
<android.support.v7.widget.RecyclerView
android:id="@+id/rvChildren"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/roundedbutton8"/>
【问题讨论】:
-
您能否使用 RecyclerView 发布您尝试将适配器设置为的 XML 代码?
-
检查你是否从firebase接收
-
@KacperKogut 已经编辑问题..
-
您确定
DataSnapshot包含任何数据吗? -
@Adda 使用这样的日志来检查 Log.e("data", String.valueOf(mChildrenList));
标签: android firebase firebase-realtime-database android-recyclerview android-adapter