Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 来自Firebase的数据未显示在RecyclerView上大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试显示来自Firebase数据库的数据,但我得到以下信息:
my recyclerview

Firebase database.

我一直在寻找不同的解决方案,但我仍然会回到同样的问题.我对Android和编程都很新,所以任何帮助都会受到赞赏.这是相关的代码.

LogbookFragment:

public class LogbookFragment extends Fragment {

private TextView textView;
private CardView cardView;
private String assessment;
private String details;

private RecyclerView rv;
requestQueue requestQueue;

private List<Assessment> skillsList = new ArrayList<>();

private static final String ARG_SECTION_numbER = "position";

/**
 * Returns a new instance of this fragment for the given section
 * number.
 */
public static LogbookFragment newInstance(int position) {
    LogbookFragment fragment = new LogbookFragment();
    Bundle args = new Bundle();
    args.puTint(ARG_SECTION_numbER,position);
    fragment.setArguments(args);
    return fragment;
}

public LogbookFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceStatE) {
    View rootView = inflater.inflate(R.layout.fragment_logbook,container,falsE);

    Context context = getActivity();
    cardView = (CardView) rootView.findViewById(R.id.cv);
    rv = (RecyclerView) rootView.findViewById(R.id.rv);

    final linearlayoutmanager llm = new linearlayoutmanager(context);
    rv.setLayoutManager(llm);

    final RVAdapter adapter = new RVAdapter(skillsList);
    rv.setAdapter(adapter);

    initializeData();

    return rootView;
}

private void initializeData(){
    skillsList = new ArrayList<>();
    Firebase ref = new Firebase("https://athenajs.firebaseio.com/assessments");

    final RVAdapter adapter = new RVAdapter(skillsList);


    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            System.out.println(dataSnapshot.getValue());

            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                for (int i = 0; i<42; i++) {
                    assessment = postSnapshot.child("assessment").getChildren().toString();
                    details = postSnapshot.child("details").getChildren().toString();

                    skillsList.add(new Assessment(assessment,details));
                    rv.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                }

            }

        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            System.out.println("The read Failed: " + firebaseError.getmessage());
        }
    });
}

}

RVAdapter:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.AssessviewHolder> {



public static class AssessviewHolder extends RecyclerView.ViewHolder {

    CardView cv;
    TextView assessName;
    TextView pracName;

    AssessviewHolder(View itemView) {
        super(itemView);
        cv = (CardView)itemView.findViewById(R.id.cv);
        assessName = (TextView)itemView.findViewById(R.id.assessment);
        pracName = (TextView) itemView.findViewById(R.id.details);

    }
}

List<Assessment> skill;

RVAdapter(List<Assessment> skills){
    this.skill = skills;
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
}

@Override
public AssessviewHolder onCreateViewHolder(ViewGroup viewGroup,int i) {
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.itemlogbook,viewGroup,falsE);
    AssessviewHolder avh = new AssessviewHolder(v);
    return avh;
}

@Override
public void onBindViewHolder(AssessviewHolder assessviewHolder,int i) {
    assessviewHolder.assessName.setText(skill.get(i).assessment);
    assessviewHolder.pracName.setText(skill.get(i).details);
}

@Override
public int getItemCount() {
    return skill.size();

}

}

评估类:

public class Assessment {
String assessment;
String details;

Assessment(String assessment,String details) {
    this.assessment = assessment;
    this.details = details;

}

public String getAssessment() {
    return assessment;
}

public String getDetails() {
    return details;
}

解决方法

正如评论中所述,问题可能是您只在初始化适配器后才将数据添加到skillsList中 – 并且由于skillsList首先是空的,因此无需显示任何内容.
因此,您实际上并未更改基础数据,而是使用第一个初始数据初始化适配器 – 这些是您应该对initializeData()方法所做的更改:

private void initializeData(){
    skillsList = new ArrayList<>();
    Firebase ref = new Firebase("https://athenajs.firebaseio.com/assessments/skills");

    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            System.out.println(dataSnapshot.getValue());

            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                for (int i = 0; i<42; i++) {
                    assessment = postSnapshot.child("assessment").getValue().toString();
                    details = postSnapshot.child("details").getValue().toString();
                    //here you add the assessment object to the list
                    skillsList.add(new Assessment(assessment,details));                    
                }

            }
            //at this point you have looped through all the "children" - 
            //Now you are ready to initialize the adapter
            RVAdapter adapter = new RVAdapter(skillsList);
            rv.setAdapter(adapter));
            //commented out: no need to call this Now - since you have not made any changes to the data
            //adapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            System.out.println("The read Failed: " + firebaseError.getmessage());
        }
    });
}

我希望这有帮助.试一试,让我知道.

大佬总结

以上是大佬教程为你收集整理的android – 来自Firebase的数据未显示在RecyclerView上全部内容,希望文章能够帮你解决android – 来自Firebase的数据未显示在RecyclerView上所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。