Java Firestore数据未显示在表格布局的RecyclerView中
我在一张表格里有两个碎片。数据不能在RecyclerView中显示,但数量正确,我可以在logcat中显示数据,但不能在RecyclerView中显示 Fragment_users.javaJava Firestore数据未显示在表格布局的RecyclerView中,java,google-cloud-firestore,android-recyclerview,android-tablayout,Java,Google Cloud Firestore,Android Recyclerview,Android Tablayout,我在一张表格里有两个碎片。数据不能在RecyclerView中显示,但数量正确,我可以在logcat中显示数据,但不能在RecyclerView中显示 Fragment_users.java public class Fragment_users extends Fragment { private static final String TAG = "Fragment_users"; @Nullable @Override public V
public class Fragment_users extends Fragment {
private static final String TAG = "Fragment_users";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView=inflater.inflate(R.layout.fragment_users,container,false);
dataModalArrayList = new ArrayList<>();
db = FirebaseFirestore.getInstance();
coursesLV = (RecyclerView) rootView.findViewById(R.id.usersRView);
coursesLV.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false));
loadDatainListview();
return rootView;
}
RecyclerView coursesLV;
ArrayList<users> dataModalArrayList;
FirebaseFirestore db;
ViewPager holder;
private void loadDatainListview() {
db.collection("users").whereEqualTo("isUser", true).get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
})
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (!queryDocumentSnapshots.isEmpty()) {
List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
for (DocumentSnapshot d : list) {
users dataModal = d.toObject(users.class);
dataModalArrayList.add(dataModal);
}
CustomAdapter adapter = new CustomAdapter(dataModalArrayList);
coursesLV.setAdapter(adapter);
} else {
Log.d(TAG, "No data found in Database");
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), "Fail to load data.", Toast.LENGTH_SHORT).show();
Log.d(TAG, "onFailure: Cannot load data. " + e.toString());
}
});
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
CustomAdapter adapter = new CustomAdapter(dataModalArrayList);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.usersRView);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
}
}
CustomAdapter.java
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyHolder> {
ArrayList<users> list = new ArrayList<>();
CustomAdapter.ItemClickListener itemClickListener;
public CustomAdapter(ArrayList<users> list) {
this.list = list;
}
@NotNull
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_addnewadmin,parent,false);
return new MyHolder(view);
}
@Override
public void onBindViewHolder(MyHolder holder, final int position) {
final users userData = list.get(position);
holder.listViewText.setText(userData.getFullName());
Picasso.get().load(userData.getImgUrl()).into(holder.listViewImg);
holder.upgradeUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
itemClickListener.OnItemClick(position,userData);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public interface ItemClickListener {
void OnItemClick(int position,users userData);
}
public static class MyHolder extends RecyclerView.ViewHolder{
TextView listViewText;
ImageView listViewImg;
Button upgradeUser;
public MyHolder(View itemView) {
super(itemView);
listViewText = itemView.findViewById(R.id.listViewText);
listViewImg = itemView.findViewById(R.id.listViewImg);
upgradeUser = itemView.findViewById(R.id.upgradeUser);
}
}
public void setOnItemClickListener(ItemClickListener itemClickListener){
this.itemClickListener = (CustomAdapter.ItemClickListener) itemClickListener;
}
public void UpdateData(int position,users userData){
list.remove(position);
list.add(userData);
notifyItemChanged(position);
notifyDataSetChanged();
}
}
公共类CustomAdapter扩展了RecyclerView.Adapter{
ArrayList=新建ArrayList();
CustomAdapter.ItemClickListener ItemClickListener;
公共CustomAdapter(ArrayList列表){
this.list=列表;
}
@NotNull
@凌驾
public MyHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.cardwiew\u addnewadmin,parent,false);
返回新的MyHolder(视图);
}
@凌驾
公共无效onBindViewHolder(MyHolder,最终整数位置){
最终用户userData=list.get(位置);
holder.listViewText.setText(userData.getFullName());
Picasso.get().load(userData.getImgUrl()).into(holder.listViewImg);
holder.upgradeUser.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
itemClickListener.OnItemClick(位置、用户数据);
notifyDataSetChanged();
}
});
}
@凌驾
public int getItemCount(){
返回list.size();
}
公共接口项ClickListener{
void OnItemClick(int位置,用户userData);
}
公共静态类MyHolder扩展了RecyclerView.ViewHolder{
文本视图列表视图文本;
图像视图列表视图img;
按钮升级用户;
公共MyHolder(查看项目视图){
超级(项目视图);
listViewText=itemView.findViewById(R.id.listViewText);
listViewImg=itemView.findViewById(R.id.listViewImg);
upgradeUser=itemView.findViewById(R.id.upgradeUser);
}
}
public void setOnItemClickListener(项ClickListener项ClickListener){
this.itemClickListener=(CustomAdapter.itemClickListener)itemClickListener;
}
public void UpdateData(int位置,用户userData){
列表。删除(位置);
添加(用户数据);
(职位)变更;
notifyDataSetChanged();
}
}
输出:
日志:
请帮我指出哪里错了。谢谢你的阅读。祝你今天愉快:)
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyHolder> {
ArrayList<users> list = new ArrayList<>();
CustomAdapter.ItemClickListener itemClickListener;
public CustomAdapter(ArrayList<users> list) {
this.list = list;
}
@NotNull
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_addnewadmin,parent,false);
return new MyHolder(view);
}
@Override
public void onBindViewHolder(MyHolder holder, final int position) {
final users userData = list.get(position);
holder.listViewText.setText(userData.getFullName());
Picasso.get().load(userData.getImgUrl()).into(holder.listViewImg);
holder.upgradeUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
itemClickListener.OnItemClick(position,userData);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public interface ItemClickListener {
void OnItemClick(int position,users userData);
}
public static class MyHolder extends RecyclerView.ViewHolder{
TextView listViewText;
ImageView listViewImg;
Button upgradeUser;
public MyHolder(View itemView) {
super(itemView);
listViewText = itemView.findViewById(R.id.listViewText);
listViewImg = itemView.findViewById(R.id.listViewImg);
upgradeUser = itemView.findViewById(R.id.upgradeUser);
}
}
public void setOnItemClickListener(ItemClickListener itemClickListener){
this.itemClickListener = (CustomAdapter.ItemClickListener) itemClickListener;
}
public void UpdateData(int position,users userData){
list.remove(position);
list.add(userData);
notifyItemChanged(position);
notifyDataSetChanged();
}
}