EDIT: Die vorgeschlagene doppelte Frage beantwortet meine Frage in keiner Weise, Form oder Form.NullPointerException in RecyclerView Adapter
Ich habe Probleme beim Einrichten meines RecyclerView-Adapters. Ich bekomme zwei Fehler:
09-19 20:01:38.601 22710-22710/com.yitter.android E/RecyclerView: No adapter attached; skipping layout
... und:
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 meiner initialise()
Klasse (innerhalb onCreate()
), habe ich bis meine RecyclerView und 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));
Ich gebe eine Liste basierend auf einer Abfrage:
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;
}
Voll Code: https://gist.github.com/santafebound/e71bc433ddf03a791ac1d89679559490
FeedAdapter:
Ich habe das Gefühl, das Problem in meinem Adapter ist, aber ich kann es nicht herausgefunden. Was könnte schief gehen?
Voll Code: https://gist.github.com/santafebound/c8207bd9075f1025243e5b6661b7afc5
Antwort:
änderte ich dies in meinem 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);
und in meinem retrieveYeets()
Methode entfernt die folgenden Zeilen:
Ihr Fehler liegt auf der Hand. Das erste verursacht, weil Sie nicht den richtigen Adapter daran angebracht haben, der zweite sagte, dass Sie versuchen, Setater vor der Initialisierung recyclingView –
Lol Sie Jungs fühlen sich salzig? – santafebound