Har nettopp implementert Recyclerview i koden min, og erstattet Listview.
alt fungerer fint. Objektene vises.
men logcat sier
15:25:53.476 E/RecyclerView﹕ No adapter attached; skipping layout
15:25:53.655 E/RecyclerView﹕ No adapter attached; skipping layout
for koden
ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);
recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
Som du ser har jeg lagt ved en adapter for Recycleview. så hvorfor får jeg stadig denne feilen?
Jeg har lest andre spørsmål relatert til samme problem, men ingen hjelper.
Kan du sørge for at du kaller disse uttalelsene fra "main"-tråden (for eksempel i "onCreate()-metoden).
Så snart jeg kaller de samme uttalelsene fra en "forsinket" metode. I mitt tilfelle en ResultCallback
, får jeg den samme meldingen.
I mitt Fragment
, kaller koden nedenfor fra innsiden av en ResultCallback
-metode gir den samme meldingen. Etter å ha flyttet koden til onConnected()
-metoden i appen min, var meldingen borte ...
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
list.setLayoutManager(llm);
list.setAdapter( adapter );
Jeg fikk de samme to feilmeldingene helt til jeg fikset to ting i koden min:
(1) Som standard, når du implementerer metoder i RecyclerView.Adapter
den genererer:
@Override
public int getItemCount() {
return 0;
}
Sørg for at du oppdaterer koden din slik at det står:
@Override
public int getItemCount() {
return artists.size();
}
Hvis du har null varer i varene dine, vil du selvsagt få null ting vist på skjermen.
(2) Jeg gjorde ikke dette som vist i det øverste svaret: https://stackoverflow.com/questions/24503760/cardview-layout-width-match-parent-does-not-match-parent-recyclerview-width
//correct
LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_listitem, parent, false);
//incorrect (what I had)
LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_listitem,null);
(3) REDIGER: BONUS:
Sørg også for at du setter opp RecyclerView
slik:
<android.support.v7.widget.RecyclerView
android:id="@+id/RecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
IKKE slik:
<view
android:id="@+id/RecyclerView"
class="android.support.v7.widget.RecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Jeg har sett noen opplæringsprogrammer som bruker sistnevnte metode. Selv om det fungerer, tror jeg det genererer denne feilen også.
Det skjer når du ikke stiller inn adapteren under opprettingsfasen:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
....
}
public void onResume() {
super.onResume();
mRecyclerView.setAdapter(mAdapter);
....
}
Bare flytt innstillingen av adapteren til onCreate med tomme data og når du har datakallet:
mAdapter.notifyDataSetChanged();