【发布时间】:2021-04-17 13:49:30
【问题描述】:
我尝试使用 recyclerview 显示 Firebase 数据。
检索数据很好,我可以在logcat中查看。
recyclerview 有时会显示数据,但通常什么都不显示。
recycleview显示数据时,很好地反映了firebase数据。
谁能告诉我什么问题?我的 xml 代码有错误吗?
Java 代码
artistData.child(starList[i]).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot starDataSnap) {
int fanNums = (int) starDataSnap.child("fanNums").getValue(Integer.class);
int placeNums = (int) starDataSnap.child("placeNums").getValue(Integer.class);
Log.d("####", finalStarName + fanNums + placeNums);
drawerStarImage = getResources().getIdentifier(finalStarImgName, "drawable", getActivity().getPackageName());
ItemStarData itemStarData = new ItemStarData();
itemStarData.setStarImage(drawerStarImage);
itemStarData.setStarName(finalStarName);
itemStarData.setFanNums(fanNums);
itemStarData.setPlaceNums(placeNums);
drawerStarList.add(itemStarData);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
适配器类代码
public class AdapterStarlist extends RecyclerView.Adapter<AdapterStarlist.ViewHolder>{
ArrayList<ItemStarData> array;
Context context;
public AdapterStarlist(ArrayList<ItemStarData> array, Context context) {
this.array = array;
this.context =context;
}
@NonNull
@Override
public AdapterStarlist.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_home_starlist,parent,false);
return new AdapterStarlist.ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AdapterStarlist.ViewHolder holder, int position) {
Log.d("####", array.get(position).getStarName());
holder.Imgstarlist.setImageResource(array.get(position).getStarImage());
holder.followStarName.setText(String.valueOf(array.get(position).getStarName()));
holder.starlistfanNum.setText(String.valueOf(array.get(position).getFanNums()));
holder.starlistPlaceNum.setText(String.valueOf(array.get(position).getPlaceNums()));
}
@Override
public int getItemCount() {
return array.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView Imgstarlist;
TextView followStarName;
TextView starlistfanNum;
TextView starlistPlaceNum;
public ViewHolder(@NonNull View itemView) {
super(itemView);
Imgstarlist =itemView.findViewById(R.id.Imgstarlist);
followStarName =itemView.findViewById(R.id.followStarName);
starlistfanNum =itemView.findViewById(R.id.starlistfanNum);
starlistPlaceNum =itemView.findViewById(R.id.starlistPlaceNum);
Imgstarlist.setBackground(new ShapeDrawable(new OvalShape()));
Imgstarlist.setClipToOutline(true);
}
}
}
部分xml代码
<ScrollView
android:layout_width="match_parent"
android:layout_height="480dp"
android:layout_marginTop="24dp"
android:fillViewport="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/DrawerStarlist"
>
<RelativeLayout
android:id="@+id/rlDrawerStarlist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/DrawerStarlist">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvDrawerStarlist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
</RelativeLayout>
</ScrollView>
【问题讨论】:
标签: android firebase firebase-realtime-database android-recyclerview