なぜ私のフラグメントはrecyclerviewからのデータを表示することができないではないですか?

Ramu :

ここに投稿する前に、私は自分からそれを把握するためにかなりの時間を費やして、私はしかし、さまざまなエラーを削除しました。私はリサイクルview.Theの問題が含まれている私のアプリでフラグメントを使用するまで働いていた罰金をevrything、少しnotesappを開発しています、私は、データベースからrecyclerviewアダプタに取得したデータを渡すことができないということです。

エラーは、「ヌルオブジェクト参照に 『無効com.example.diary.RecyclerAdapter.setdata(java.util.Listに)』仮想メソッドを呼び出そうと」と言います

私は、NULLポインタエラーを取得しない理由IAMは混乱し、データが空でないことを確認しました。

関連するコードは以下掲載されています。

fragment.java

 @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_recents, container, false);
    RecyclerAdapter adapter;
    db = NotesDatabase.createdb(getContext());

    adapter = new RecyclerAdapter(numofitems); 
     retrievetasks();
    layoutManager = new LinearLayoutManager(getActivity());
    binding = DataBindingUtil.setContentView(getActivity(), R.layout.fragment_recents);
    binding.recyclerView.setLayoutManager(layoutManager);
    binding.recyclerView.setAdapter(adapter);
    Log.d("adapeter", "has set");
    return view;
}

public void retrievetasks() {
    try {
        LiveData<List<NotesEntry>> notesEntries = db.Dao().loadalltasks();
        notesEntries.observe(this, new Observer<List<NotesEntry>>() {
            @Override
            public void onChanged(List<NotesEntry> notesEntries) {
                notes = notesEntries;
                Log.d("sizeforall", String.valueOf(notesEntries.size()));
                adapter.setdata(notesEntries); //this is where the error occures }
             });

「adapter.setdata(notesEntries)。//これはどこエラーoccuresです

adapter.java

 public void setdata(List<NotesEntry> notesEntries) {
    try {
        notesEntryList = notesEntries;
        notifyDataSetChanged();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public List<NotesEntry> getnotesentries() {
    return notesEntryList;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
    try {
        NotesEntry notesEntries = notesEntryList.get(position);
        id = notesEntries.getId();
        text = notesEntries.getText();
        // b1.setText(String.valueOf(id));
        textview1.setText(text);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
@Override
public int getItemCount() {
    if (!notesEntryList.isEmpty()) {
        Log.d("sizereturned", String.valueOf(notesEntryList.size()));
        return notesEntryList.size();
    } else
        Log.d("sizereturned1", String.valueOf(notesEntryList.size()));
    return 0; }

私が使用してフラグメントをいけない場合や、このisuueはarise.Anyヘルプは高く評価されていません。

ViswanathクマールSandu:

あなたはコールする必要がありretrievetasks()、アダプタを初期化した後の方法を。これが問題を引き起こしています

adapter = new RecyclerAdapter(numofitems);
retrievetasks();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=236797&siteId=1