-1

EDIT: The suggested duplicate question doesn't answer my question in any way, shape, or form.

I'm having trouble setting up my RecyclerView adapter. I get two errors:

09-19 20:01:38.601 22710-22710/com.yitter.android E/RecyclerView: No adapter attached; skipping layout

... and:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' on a null object reference
    at com.yitter.feed.FeedActivity.lambda$retrieveYeets$68(FeedActivity.java:402)
    at com.yitter.feed.FeedActivity.access$lambda$3(FeedActivity.java:0)
    at com.yitter.feed.FeedActivity$$Lambda$4.done(Unknown Source)
    at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:116)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

FeedActivity:

In my initialise() class (within onCreate()), I set up my RecyclerView and adapter:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
                recyclerView.setHasFixedSize(true);
                adapter = new FeedAdapter(FeedActivity.this, retrieveYeets());
                recyclerView.setAdapter(adapter);
                recyclerView.setLayoutManager(new LinearLayoutManager(this));

I pass a List based on a query:

public List<ParseObject> retrieveYeets() {
        String groupId = ParseUser.getCurrentUser().getString("groupId");
        ParseQuery<ParseObject> query = new ParseQuery<>(ParseConstants.CLASS_YEET);
        query.whereContains(ParseConstants.KEY_GROUP_ID, groupId);
        query.orderByDescending("lastReplyUpdatedAt");
        query.setLimit(1000);
        query.findInBackground((yeets, e) -> {

            if (mSwipeRefreshLayout.isRefreshing()) {
                mSwipeRefreshLayout.setRefreshing(false);
            }

            if (e == null) {

                // We found messages!
                mYeets = yeets;

                String[] usernames;
                usernames = new String[mYeets.size()];
                int i = 0;
                for(ParseObject yeet : mYeets) {
                    usernames[i] = yeet.getString(ParseConstants.KEY_SENDER_NAME);
                    i++;
                }

                // Add data to FeedAdapter
                FeedAdapter adapter = new FeedAdapter(
                        FeedActivity.this,
                        mYeets);
                recyclerView.setAdapter(adapter);

            }
        });

        return mYeets;
    }

Full Code: https://gist.github.com/santafebound/e71bc433ddf03a791ac1d89679559490

FeedAdapter:

I have a feeling the problem is in my adapter, but I can't figure it out. What could be going wrong?

Full Code: https://gist.github.com/santafebound/c8207bd9075f1025243e5b6661b7afc5


Answer:

I changed this in my MainActivity:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
                recyclerView.setLayoutManager(new LinearLayoutManager(this));
                recyclerView.setHasFixedSize(true);
                adapter = new FeedAdapter(FeedActivity.this, retrieveYeets());
                recyclerView.setAdapter(adapter);

and in my retrieveYeets() method, removed the following lines:

// Add data to FeedAdapter
                FeedAdapter adapter = new FeedAdapter(
                        FeedActivity.this,
                        mYeets);
                recyclerView.setAdapter(adapter);
Martin Erlic
  • 5,467
  • 22
  • 81
  • 153

1 Answers1

3

presumably you reference to a file in your RecyclerView block in your xml layout file that not exist in your drawable or some other folder or file...check the error lines before this lines and you can see error in line #... then check...

mohammadreza khalifeh
  • 1,510
  • 2
  • 18
  • 32