大佬教程收集整理的这篇文章主要介绍了android – 来自Firebase的数据未显示在RecyclerView上,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在寻找不同的解决方案,但我仍然会回到同样的问题.我对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; }
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,请注明来意。