webentwicklung-frage-antwort-db.com.de

recyclingübersicht Kein Adapter angeschlossen; Layout überspringen

Ich habe gerade Recyclerview in meinen Code implementiert, der Listview ersetzt.

alles funktioniert gut Die Objekte werden angezeigt.

aber logcat sagt

15: 25: 53.476 E/RecyclerView ﹕ Es ist kein Adapter angeschlossen. Layout überspringen

15: 25: 53.655 E/RecyclerView ﹕ Es ist kein Adapter angeschlossen. Layout überspringen

für den Code

ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);
recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

Wie Sie sehen, habe ich einen Adapter für Recycleview . Angeschlossen. Warum erhalte ich diesen Fehler weiterhin?

ich habe andere Fragen gelesen, die sich auf dasselbe Problem beziehen, aber keine hilft.

177
equitharn

Können Sie sicherstellen, dass Sie diese Anweisungen aus dem "main" -Thread aufrufen (z. B. innerhalb der onCreate()-Methode) . Sobald ich dieselben Anweisungen aus einer "delayed" -Methode aufrufe. In meinem Fall a ResultCallback erhalte ich dieselbe Nachricht.

In meiner Fragment wird beim Aufrufen des Codes unten in einer ResultCallback-Methode dieselbe Nachricht ausgegeben. Nachdem der Code in meiner App auf die onConnected()-Methode verschoben wurde, war die Nachricht weg ...

LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
list.setLayoutManager(llm);
list.setAdapter( adapter );
194
Peter

Ich habe die gleichen zwei Fehlermeldungen erhalten, bis ich zwei Dinge in meinem Code behoben habe: 

(1) Standardmäßig werden beim Implementieren von Methoden in RecyclerView.Adapter Folgendes generiert:

@Override
public int getItemCount() {
    return 0;
}

Stellen Sie sicher, dass Sie Ihren Code so aktualisieren, dass Folgendes angezeigt wird:

@Override
public int getItemCount() {
    return artists.size();
}

Offensichtlich werden, wenn Sie null Elemente in Ihren Artikeln haben, null Dinge auf dem Bildschirm angezeigt.

(2) Ich habe dies nicht wie in der obersten Antwort gezeigt: CardView layout_width = "match_parent" passt nicht zur übergeordneten RecyclerView-Breite

//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) BEARBEITEN: BONUS: Stellen Sie außerdem sicher, dass Sie Ihre RecyclerView wie folgt einrichten:

<Android.support.v7.widget.RecyclerView
    Android:id="@+id/RecyclerView"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    />

So nicht:

<view
    Android:id="@+id/RecyclerView"
    class="Android.support.v7.widget.RecyclerView"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" />

Ich habe einige Tutorials mit letzterer Methode gesehen. Während es funktioniert, denke ich, dass es auch diesen Fehler erzeugt. 

35
Micro

Ich habe die gleiche Situation wie Sie, die Anzeige ist in Ordnung, aber in locat ..__ wird ein Fehler angezeigt.

RecyclerView mRecycler = (RecyclerView) this.findViewById(R.id.yourid);
mRecycler.setAdapter(adapter);

(2) Rufen Sie notifyDataStateChanged auf, wenn Sie die Daten abrufen

adapter.notifyDataStateChanged();

Im Quellcode der RecyclerView gibt es einen anderen Thread, um den Status der Daten zu überprüfen.

public RecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    this.mObserver = new RecyclerView.RecyclerViewDataObserver(null);
    this.mRecycler = new RecyclerView.Recycler();
    this.mUpdateChildViewsRunnable = new Runnable() {
        public void run() {
            if(RecyclerView.this.mFirstLayoutComplete) {
                if(RecyclerView.this.mDataSetHasChangedAfterLayout) {
                    TraceCompat.beginSection("RV FullInvalidate");
                    RecyclerView.this.dispatchLayout();
                    TraceCompat.endSection();
                } else if(RecyclerView.this.mAdapterHelper.hasPendingUpdates()) {
                    TraceCompat.beginSection("RV PartialInvalidate");
                    RecyclerView.this.eatRequestLayout();
                    RecyclerView.this.mAdapterHelper.preProcess();
                    if(!RecyclerView.this.mLayoutRequestEaten) {
                        RecyclerView.this.rebindUpdatedViewHolders();
                    }

                    RecyclerView.this.resumeRequestLayout(true);
                    TraceCompat.endSection();
                }

            }
        }
    };

In dispatchLayout () können wir feststellen, dass der Fehler darin enthalten ist:

void dispatchLayout() {
    if(this.mAdapter == null) {
        Log.e("RecyclerView", "No adapter attached; skipping layout");
    } else if(this.mLayout == null) {
        Log.e("RecyclerView", "No layout manager attached; skipping layout");
    } else {
19
Keith Gong

1) Erstelle ViewHolder , der nichts bewirkt :)

// SampleHolder.Java
public class SampleHolder extends RecyclerView.ViewHolder {
    public SampleHolder(View itemView) {
        super(itemView);
    }
}

2) Erstellen Sie erneut RecyclerView , was nichts bewirkt :)

// SampleRecycler.Java
public class SampleRecycler extends RecyclerView.Adapter<SampleHolder> {
    @Override
    public SampleHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(SampleHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }
}

3) Wenn Ihr echter Recycler jetzt nicht bereit ist, verwenden Sie einfach das Beispiel wie unten beschrieben.

RecyclerView myRecycler = (RecyclerView) findViewById(R.id.recycler_id);
myRecycler.setLayoutManager(new LinearLayoutManager(this));
myRecycler.setAdapter(new SampleRecycler());

Dies ist zwar nicht die beste Lösung, aber es funktioniert! Hoffe das ist hilfreich.

9
Madan Sapkota

ich habe dieses Problem, ein paar Zeitprobleme ist recycleView in ScrollView object

Nach der Überprüfung der Implementierung scheint der Grund folgender zu sein. Wenn RecyclerView in eine ScrollView eingefügt wird, ist während des Messschritts die Höhe nicht angegeben (da ScrollView eine beliebige Höhe zulässt) und als Ergebnis die Mindesthöhe (laut Implementierung) erreicht, die anscheinend Null ist.

Sie haben mehrere Möglichkeiten, dies zu beheben:

  1. Legen Sie eine bestimmte Höhe für RecyclerView fest
  2. Setzen Sie ScrollView.fillViewport auf true
  3. Oder halten Sie RecyclerView außerhalb von ScrollView. Meiner Meinung nach ist dies mit Abstand die beste Option. Wenn die Höhe der RecyclerView-Ansicht nicht begrenzt ist (was beim Einfügen in ScrollView der Fall ist), haben alle Ansichten des Adapters ausreichend Platz und werden auf einmal erstellt. Es gibt kein Ansichtsrecycling mehr, das den Zweck von RecyclerView verletzt.

(Kann auch für Android.support.v4.widget.NestedScrollView verfolgt werden)

9
FxRi4

Dies geschieht, wenn Sie den Adapter während der Erstellungsphase nicht einstellen:

@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);
    ....
}

Verschieben Sie einfach den Adapter in onCreate mit leeren Daten und wenn Sie den Datenanruf haben:

mAdapter.notifyDataSetChanged();
6
Peter File

Stellen Sie sicher, dass Sie den Layout-Manager für Ihre RecyclerView wie folgt festgelegt haben: 

mRecyclerView.setLayoutManager(new LinearLayoutManager(context));

Anstelle von LinearLayoutManager können Sie auch other layout manager verwenden.

3
Sumit Jha

Dies ist darauf zurückzuführen, dass sich das tatsächlich aufgeblasene Layout von dem unterscheidet, das Sie beim Auffinden der RecyclerView angegeben haben. Wenn Sie das Fragment erstellen, wird die onCreateView-Methode standardmäßig wie folgt angezeigt: return inflater.inflate(R.layout.<related layout>,container.false);

Erstellen Sie stattdessen die Ansicht separat und verwenden Sie diese, um auf recycelte Ansicht zu verweisenView view= inflater.inflate(R.layout.<related layout>,container.false); recyclerview=view.findViewById(R.id.<recyclerView ID>); return view;

2
Prateek Agarwal

Ich hatte den gleichen Fehler. Ich habe das Problem behoben, wenn Sie auf Daten wie mich warten, die Retrofit oder ähnliches verwenden

Vor Oncreate setzen

private ArtistArrayAdapter adapter;
private RecyclerView recyclerView;

Setzen Sie sie in Ihren Oncreate

 recyclerView = (RecyclerView) findViewById(R.id.cardList);
 recyclerView.setHasFixedSize(true);
 recyclerView.setLayoutManager(new LinearLayoutManager(this));
 adapter = new ArtistArrayAdapter( artists , R.layout.list_item ,getApplicationContext());
 recyclerView.setAdapter(adapter);

Wenn Sie Daten erhalten, setzen Sie

adapter = new ArtistArrayAdapter( artists , R.layout.list_item ,getApplicationContext());
recyclerView.setAdapter(adapter);

Gehen Sie nun in Ihre ArtistArrayAdapter-Klasse und tun Sie dies wie folgt: Wenn Ihr Array leer oder leer ist, wird GetItemCount 0 zurückgeben, wenn dies nicht die Größe des Artists-Arrays ist

@Override
public int getItemCount() {

    int a ;

    if(artists != null && !artists.isEmpty()) {

        a = artists.size();
    }
    else {

        a = 0;

     }

   return a;
}
2
user3277530

Prüfen Sie, ob Sie diese Methode in Ihrem Adapter nicht aufgerufen haben 

@Override
public int getItemCount() {
    return list.size();
}
2
Shabbir Ahmed

Diese Zeilen müssen in OnCreate sein:

mmAdapter = new Adapter(msgList);
mrecyclerView.setAdapter(mmAdapter);
2
ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);
recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);

Ersetzen Sie einfach den obigen Code durch diesen und es sollte funktionieren. Was Sie falsch gemacht haben, ist der Aufruf von setAdapter (adapter), bevor Sie den Layout Manager aufrufen.

1
Pradeep Bogati

Ich habe diesen Fehler behoben. Sie müssen lediglich den Layout-Manager Hinzufügen und den leeren Adapter hinzufügen.

Wie dieser Code:

myRecyclerView.setLayoutManager(...//your layout manager);
        myRecyclerView.setAdapter(new RecyclerView.Adapter() {
            @Override
            public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                return null;
            }

            @Override
            public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

            }

            @Override
            public int getItemCount() {
                return 0;
            }
        });
//other code's 
// and for change you can use if(mrecyclerview.getadapter != speacialadapter){
//replice your adapter
//}
1
mehdi janbarari

Dies ist wirklich ein einfacher Fehler, den Sie erhalten, da hier keine Codes erforderlich sind .Dieser Fehler tritt aufgrund der falschen Layoutdatei auf, die von der Aktivität verwendet wird. Mit IDE habe ich automatisch ein Layout v21 eines Layouts erstellt, das zum Standardlayout der Aktivität wurde. Alle Codes, die ich in der alten und der neuen Layoutdatei verwendet habe, hatten nur wenige XML-Codes, was zu diesem Fehler führte.

Lösung: Kopieren Sie alle Codes des alten Layouts und fügen Sie sie in Layout V 21 ein.

1
Vikash Sharma

In meinem Fall habe ich den Adapter in onLocationChanged() callback UND das Debugging im Emulator eingestellt. Da es keine Standortänderung erkannt hat, hat es nie ausgelöst. Wenn ich sie manuell in den erweiterten Steuerelementen des Emulators einstelle, funktionierte das wie erwartet.

1
saiyancoder

Initialisieren Sie zunächst den Adapter

public void initializeComments(){
    comments = new ArrayList<>();

    comments_myRecyclerView = (RecyclerView) findViewById(R.id.comments_recycler);
    comments_mLayoutManager = new LinearLayoutManager(myContext);
    comments_myRecyclerView.setLayoutManager(comments_mLayoutManager);

    updateComments();
    getCommentsData();

}

public void updateComments(){

    comments_mAdapter = new CommentsAdapter(comments, myContext);
    comments_myRecyclerView.setAdapter(comments_mAdapter);
}

Rufen Sie bei Änderungen des Datensatzes einfach die updateComments-Methode auf.

1
Roger

Ich hatte das gleiche Problem und stellte fest, dass ich sowohl den LayoutManage r als auch den Adapter nach dem Abrufen der Daten von meiner Quelle einrichtete, anstatt die beiden in der onCreate - Methode festzulegen.

salesAdapter = new SalesAdapter(this,ordersList);
        salesView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        salesView.setAdapter(salesAdapter);

Dann wurde der Adapter über die Datenänderung benachrichtigt 

               //get the Orders
                Orders orders;
                JSONArray ordersArray = jObj.getJSONArray("orders");
                    for (int i = 0; i < ordersArray.length() ; i++) {
                        JSONObject orderItem = ordersArray.getJSONObject(i);
                        //populate the Order model

                        orders = new Orders(
                                orderItem.getString("order_id"),
                                orderItem.getString("customer"),
                                orderItem.getString("date_added"),
                                orderItem.getString("total"));
                        ordersList.add(i,orders);
                        salesAdapter.notifyDataSetChanged();
                    }
0
ovicko

Ich habe 16 Minuten meines Lebens mit diesem Problem verloren, also gebe ich einfach diesen unglaublich peinlichen Fehler zu, den ich gemacht habe - ich benutze Butterknife und binde die Ansicht in onCreateView in diesem Fragment. 

Es dauerte lange, bis ich herausfand, warum ich keinen Layoutmanager hatte - aber die Ansichten werden eingeblendet, damit sie nicht wirklich null sind. Der Recycler wird also niemals null sein.

@BindView(R.id.recycler_view)
RecyclerView recyclerView;

    @Override
public View onCreateView(......) {
    View v = ...;
    ButterKnife.bind(this, v);
    setUpRecycler()
 }

public void setUpRecycler(Data data)
   if (recyclerView == null) {
 /*very silly because this will never happen*/
       LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
       //more setup
       //...
    }
    recyclerView.setAdapter(new XAdapter(data));
}

Wenn Sie ein Problem wie dieses erhalten, verfolgen Sie Ihre Ansicht und verwenden Sie etwas wie uiautomatorviewer

0
Saik Caskey

Für diejenigen, die RecyclerView innerhalb eines verwenden fragment und pumpen Sie es aus anderen Ansichten auf: Wenn Sie die gesamte Fragmentansicht aufblasen, stellen Sie sicher, dass Sie RecyclerView an seine Stammansicht binden. 

Ich habe die Verbindung hergestellt und alles richtig gemacht, aber ich habe die Bindung nie gemacht. Diese Antwort von @Prateek Agarwal hat alles für mich, aber hier ist mehr Ausarbeitung.

Kotlin

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {

    val rootView =  inflater?.inflate(R.layout.fragment_layout, container, false)
    recyclerView = rootView?.findViewById(R.id.recycler_view_id)
    // rest of my stuff
    recyclerView?.setHasFixedSize(true)
    recyclerView?.layoutManager = viewManager
    recyclerView?.adapter = viewAdapter
    // return the root view
    return rootView
}

Java

  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View rootView= inflater.inflate(R.layout.fragment_layout,container.false);
    recyclerview= rootView.findViewById(R.id.recycler_view_id);
    // rest ...
    return rootView;
}
0
N. Osil

Erstellen Sie in Ihrer RecyclerView-Adapterklasse beispielsweise MyRecyclerViewAdapter einen Konstruktor mit den folgenden Parametern.

MyRecyclerViewAdapter(Context context, List<String> data) {
    this.mInflater = LayoutInflater.from(context); // <-- This is the line most people include me miss
    this.mData = data;
}

mData sind die Daten, die Sie an den Adapter übergeben. Es ist optional, wenn keine zu übergebenden Daten vorhanden sind .____mInflater ist das von Ihnen erstellte Objekt LayoutInflater, das Sie in der Funktion OnCreateViewHolder des Adapters verwenden.

Danach befestigst du den Adapter in der MainActivity oder wo auch immer du willst auf dem Main/UI-Thread richtig

MyRecyclerViewAdapter recyclerAdapter;
OurDataStuff mData;

    ....
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Like this:

        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerAdapter = new RecyclerAdapter(this, mData); //this, is the context. mData is the data you want to pass if you have any
        recyclerView.setAdapter(recyclerAdapter);
    }
   ....
0
Neil Agarwal

Mein Problem war, dass mein Recycler so aussah 

        <Android.support.v7.widget.RecyclerView
        Android:id="@+id/chatview"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">
    </Android.support.v7.widget.RecyclerView>

Wann hätte es so aussehen sollen 

       <Android.support.v7.widget.RecyclerView
        Android:id="@+id/chatview"
        Android:layout_width="395dp"
        Android:layout_height="525dp"
        Android:layout_marginTop="52dp"
        app:layout_constraintTop_toTopOf="parent"
        tools:layout_editor_absoluteX="8dp"></Android.support.v7.widget.RecyclerView>
</Android.support.constraint.ConstraintLayout>
0

Keine große Antwort, aber ich hatte das gleiche Problem, auch wenn der Code korrekt war. Manchmal ist es einfach die einfachste Marke. In diesem Fall kann der Fehler des OP auch <uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" /> aus dem Manifest fehlen, wodurch der gleiche Fehler reproduziert wird.

0
SpicyWeenie

Fügen Sie einfach Folgendes zu RecyclerView hinzu.

app:layoutManager="Android.support.v7.widget.LinearLayoutManager"

Beispiel:

   <Android.support.v7.widget.RecyclerView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:app="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/recyclerView"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:scrollbars="vertical"
        app:layoutManager="Android.support.v7.widget.LinearLayoutManager"
        app:layout_constraintBottom_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </Android.support.v7.widget.RecyclerView>
0
Alan Deep

In meinem Fall ist es passiert, weil ich eine RecyclerView in ein LinearLayout eingebettet habe.

Ich hatte zuvor eine Layout-Datei, die nur einen RecyclerView-Stamm wie folgt enthielt

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.RecyclerView
    Android:id="@+id/list"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:listitem="@layout/fragment_products"

    Android:name="Products.ProductsFragment"
    app:layoutManager="LinearLayoutManager"
    tools:context=".Products.ProductsFragment"

    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"/>

Ich glaube, das Problem ist innerhalb der 3 Zeilen getrennt. Jedenfalls denke ich, dass es ein einfaches Problem ist. Ich werde morgen daran arbeiten. Ich dachte, ich sollte schreiben, was ich gefunden habe, bevor ich diesen Thread vergessen habe.

0
SoliQuiD

// Es passiert, wenn Sie den Adapter während der Erstellungsphase nicht einstellen: Rufen Sie notifyDataSetChanged () auf, wenn die API-Antwort Its Working erhält

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);


        magazineAdapter = new MagazineAdapter(getContext(), null, this );
        newClipRecyclerView.setAdapter(magazineAdapter);
        magazineAdapter.notifyDataSetChanged();

       APICall();
}

public void APICall() {
    if(Response.isSuccessfull()){
    mRecyclerView.setAdapter(mAdapter);
   }
}
Just move setting the adapter into onCreate with an empty data and when you have the data call:

mAdapter.notifyDataSetChanged();
0
Keshav Gera

In meiner Situation war es eine vergessene Komponente, die in der ViewHolder-Klasse lokalisiert wurde, aber nicht in der Layoutdatei

0
lomec

Dieses Problem tritt auf, weil Sie keine LayoutManager für Ihre RecyclerView hinzufügen. 

Ein weiterer Grund ist, dass Sie diesen Code in einem NonUIThread aufrufen. Stellen Sie sicher, dass Sie diesen Aufruf im UIThread aufrufen.

Die Lösung besteht nur darin, dass Sie eine LayoutManager für die RecyclerView vor Ihnen setAdapter im UI-Thread hinzufügen müssen.

recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
0
Khalid Taha

Wird gelöst, indem die initialisierte leere Liste und der Adapter am unteren Rand festgelegt und notifyDataSetChanged aufgerufen werden, wenn Ergebnisse abgerufen werden.

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    recyclerviewItems.setLayoutManager(linearLayoutManager);
    someAdapter = new SomeAdapter(getContext(),feedList);
    recyclerviewItems.setAdapter(someAdapter);
0
Tabraiz Malik

Ich habe noch eine weitere Antwort hinzugefügt, seit ich auf diesen Thread gestoßen bin und den Fehler gegoogelt habe. Ich habe versucht, eine PreferenceFragmentCompat zu initialisieren, habe aber vergessen, die Präferenz-XML in onCreatePreferences wie folgt aufzublähen:

class SettingsFragment : PreferenceFragmentCompat() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val inflater = LayoutInflater.from(context)
        inflater.inflate(R.layout.fragment_settings, null)
    }

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        // Missing this line here:
        //   setPreferencesFromResource(R.xml.settings, rootKey)
    }
}

Der Fehler war ein Rätsel, bis ich erkannte, dass PreferenceFragmentCompat intern eine RecyclerView verwenden muss.

0
aschmied