来自Firebase的数据未显示在RecyclerView上

岑岑陶

我正在尝试从Firebase数据库中显示数据,但得到以下信息:我的recyclerview

Firebase数据库。

我一直在寻找不同的解决方案,但我仍然继续回到同样的问题。我对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());
        }
    });
}

我希望这有帮助。试试看,让我知道。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自Firebase的数据未显示在RecyclerView上

来自分类Dev

来自Firebase的数据未显示在片段中的RecyclerView中

来自分类Dev

Recyclerview 未显示 Firebase 数据

来自分类Dev

解析来自 JSON 的数据后,Recyclerview 中的数据未显示

来自分类Dev

来自sql数据库的记录未显示在datagrid上

来自分类Dev

如何获取屏幕上未显示的 RecyclerView 项目的数据?

来自分类Dev

Firebase RecyclerView UI 未显示

来自分类Dev

kotlin recyclerview 数据未显示

来自分类Dev

在Recyclerview中显示来自Firebase的数据,并按用户名过滤-如何?

来自分类Dev

显示在片段与来自火力地堡数据RecyclerView

来自分类Dev

RecyclerView 不显示来自 JSON 的数据

来自分类Dev

无法在 RecyclerView 上显示数据

来自分类Dev

事件未显示在Firebase上

来自分类Dev

图像未显示在 firebase RecyclerView 中

来自分类Dev

在 RecyclerView 中按下后退按钮之前未显示 firebase 数据

来自分类Dev

CardView 在 recyclerView 上未正确显示

来自分类Dev

数据未显示在TableViewController上

来自分类Dev

RecyclerView 未显示解析的 GSON 数据

来自分类Dev

Firestore 数据未显示在 RecyclerView 中

来自分类Dev

显示来自Firebase数据库的消息

来自分类Dev

如何更快地显示来自 Firebase 的数据?

来自分类Dev

Firebase数据库未显示数据

来自分类Dev

Firebase中的数据未在RecyclerView中显示

来自分类Dev

Firebase RecyclerView - 如何仅显示过滤数据?

来自分类Dev

列表视图未显示来自Android数据库的数据

来自分类Dev

RecyclerView在列表上显示已删除的数据

来自分类Dev

RecyclerView显示来自2种不同布局的数据

来自分类Dev

使用来自 Firebase 的两组数据填充 RecyclerView

来自分类Dev

Firebase 数据未显示在应用中

Related 相关文章

热门标签

归档