recyclerview Sin adaptador conectado; diseño de omisión


Acabo de implementar Recyclerview en mi código, reemplazando Listview.

Todo funciona bien. Se muestran los objetos.

Pero logcat dice

15:25:53.476 E / RecyclerView No Sin adaptador conectado; diseño de salto

15:25:53.655 E / RecyclerView No Sin adaptador conectado; diseño de salto

Para el código

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

Como puede ver, he adjuntado un adaptador para Recycleview. entonces, ¿por qué sigo recibiendo este error?

I ha leído otras preguntas relacionadas con el mismo problema, pero ninguna ayuda.

Author: IntelliJ Amiya, 2015-03-19

24 answers

Puede asegurarse de que está llamando a estas instrucciones desde el hilo "principal" (por ejemplo, dentro del método onCreate()). Tan pronto como llame a las mismas declaraciones de un método "retardado". En mi caso a ResultCallback, recibo el mismo mensaje.

En mi Fragment, llamar al siguiente código desde dentro de un método ResultCallback produce el mismo mensaje. Después de mover el código al método onConnected() dentro de mi aplicación, el mensaje desapareció...

LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
list.setLayoutManager(llm);
list.setAdapter( adapter );
 170
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-05 07:52:37

Estaba recibiendo los mismos dos mensajes de error hasta que arreglé dos cosas en mi código:

(1) De forma predeterminada, cuando implementa métodos en el RecyclerView.Adapter genera:

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

Asegúrate de actualizar tu código para que diga:

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

Obviamente, si tiene cero elementos en sus elementos, entonces obtendrá cero cosas que se muestran en la pantalla.

(2) No estaba haciendo esto como se muestra en la respuesta superior: CardView layout_width= "match_parent" no coincide con el padre RecyclerView anchura

//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) EDITAR: BONUS: También asegúrese de configurar su RecyclerView de esta manera:

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

NO así:

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

He visto algunos tutoriales usando este último método. Mientras funciona creo que genera este error también.

 32
Author: Micro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-13 11:27:13

Tengo la misma situación con usted, la pantalla está bien, pero el error aparece en el locat. Esa es mi solución: (1) Inicialice el adaptador RecyclerView & bind EN CREATE ()

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

(2) llame a notifyDataStateChanged cuando obtenga los datos

adapter.notifyDataStateChanged();

En el código fuente de RecyclerView, hay otro subproceso para verificar el estado de los datos.

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();
                }

            }
        }
    };

En dispatchLayout (), podemos encontrar que hay un error en él:

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 {
 17
Author: Keith Gong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-06 08:03:23

Tengo este problema, un problema de tiempo es RecycleView poner en ScrollView objeto

Después de verificar la implementación, la razón parece ser la siguiente. Si RecyclerView se coloca en un ScrollView, entonces durante el paso de medida su altura no se especifica (porque ScrollView permite cualquier altura) y, como resultado, obtiene igual a la altura mínima (según la implementación) que es aparentemente cero.

Tienes un par de opciones para arreglar esto:

  1. Establecer un cierto altura a RecyclerView
  2. Establecer ScrollView.fillViewport a true
  3. O mantenga RecyclerView fuera de ScrollView. En mi opinión, esta es la mejor opción por lejos. Si la altura de RecyclerView no está limitada, que es el caso cuando se coloca en ScrollView, entonces todas las vistas del Adaptador tienen suficiente lugar verticalmente y se crean todas a la vez. No hay reciclaje de vista más que rompe un poco el propósito de RecyclerView .

(Se puede seguir para android.support.v4.widget.NestedScrollView también)

 8
Author: FxRi4,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 01:35:12

1) Crear ViewHolder que no hace nada :)

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

2) De nuevo crear RecyclerView que no hace nada :)

// 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) Ahora, cuando su reciclador real no está listo, solo use la muestra como la siguiente.

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

Esta no es la mejor solución, pero funciona! Espero que esto sea útil.

 7
Author: Madan Sapkota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-25 09:30:49

Sucede cuando no está configurando el adaptador durante la fase de creación:

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

Simplemente mueva la configuración del adaptador a onCreate con datos vacíos y cuando tenga la llamada de datos:

mAdapter.notifyDataSetChanged();
 6
Author: Peter File,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-04 08:09:34

Asegúrese de configurar el administrador de diseño para su RecyclerView de la siguiente manera:

mRecyclerView.setLayoutManager(new LinearLayoutManager(context));

En lugar de LinearLayoutManager, puede usar otros administradores de diseño también.

 2
Author: Sumit Jha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-16 09:00:35

Tuve el mismo error que lo arreglé haciendo esto si está esperando datos como yo usando retrofit o algo así

Poner antes de Oncreate

private ArtistArrayAdapter adapter;
private RecyclerView recyclerView;

Ponlos en tu 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);

Cuando reciba datos ponga

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

Ahora vaya a su clase ArtistArrayAdapter y haga esto lo que hará es si su matriz está vacía o es nula hará que getItemCount devuelva 0 si no lo hará del tamaño de artists array

@Override
public int getItemCount() {

    int a ;

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

        a = artists.size();
    }
    else {

        a = 0;

     }

   return a;
}
 2
Author: user3277530,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-19 07:08:35

Estas Líneas deben estar en OnCreate:

mmAdapter = new Adapter(msgList);
mrecyclerView.setAdapter(mmAdapter);
 2
Author: Mallikarjun Dodmani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-01 10:22:03
ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);
recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);

Simplemente reemplace el código anterior con esto y debería funcionar. Lo que hizo mal es que llamó a setAdapter (adaptador) antes de llamar a layout manager.

 1
Author: Pradeep Bogati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-08 12:14:03

Esto es realmente un error simple que está recibiendo, no hay necesidad de hacer ningún código en esto. Este error se produce debido al archivo de diseño incorrecto utilizado por la actividad. Por IDE creé automáticamente una maquetación v21 de una maquetación que se convirtió en una maquetación predeterminada de la actividad. todos los códigos que hice en el archivo de diseño antiguo y el nuevo solo tenía pocos códigos xml, lo que llevó a ese error.

Solución: Copie todos los códigos de la maquetación antigua y péguelos en maquetación v 21

 1
Author: Vikash Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-31 12:25:11

En mi caso, estaba configurando el adaptador dentro de onLocationChanged() devolución de llamada Y depuración en el emulador. Como no detectó un cambio de ubicación, nunca disparó. Cuando los configuré manualmente en los controles extendidos del emulador funcionó como se esperaba.

 1
Author: saiyancoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-24 19:51:28

He resuelto este error. Solo necesita agregar el administrador de diseño y añadir el adaptador vacío.

Como este código:

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
Author: mehdi janbarari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-19 11:03:59

Esto sucede porque el diseño inflado real es diferente del que está siendo referido por usted mientras encuentra el RecyclerView. De forma predeterminada, al crear el fragmento, el método onCreateView aparece de la siguiente manera: return inflater.inflate(R.layout.<related layout>,container.false);

En lugar de eso, cree por separado la vista y use eso para referirse a RecyclerView View view= inflater.inflate(R.layout.<related layout>,container.false); recyclerview=view.findViewById(R.id.<recyclerView ID>); return view;

 1
Author: Prateek Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-22 20:03:24

Primero inicialice el adaptador

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

Cuando haya un cambio en el conjunto de datos, simplemente llame al método updateComments.

 1
Author: Roger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-19 06:38:24

En mi situación era un componente olvidado que se localiza en la clase ViewHolder pero no se encuentra en el archivo de diseño

 0
Author: lomec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-29 23:08:32

Tuve el mismo problema y me di cuenta de que estaba configurando el LayoutManager y el adapter después de recuperar los datos de mi fuente en lugar de establecer los dos en el método onCreate.

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

Luego notificó al adaptador sobre el cambio de datos

               //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
Author: ovicko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-22 11:39:19

Este problema se debe a que no está agregando ningún LayoutManager para su RecyclerView.

Otra razón es porque estás llamando a este código en un NonUIThread. Asegúrese de llamar a esta llamada en el UIThread.

La solución es que solo tienes que agregar un LayoutManager para el RecyclerView antes de setAdapter en el subproceso de interfaz de usuario.

recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
 0
Author: Khalid Taha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-26 14:52:24

Mi problema era que mi vista de reciclador se veía así

        <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>

Cuando debería haberse visto así

       <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
Author: Kingsley Mitchell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-29 02:02:37

En su clase adaptador RecyclerView, por ejemplo MyRecyclerViewAdapter, haga un constructor con los siguientes parámetros.

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

mData son los datos que pasará al adaptador. Es opcional si no tiene datos que pasar. mInflater es el objeto LayoutInflater que ha creado y utiliza en la función OnCreateViewHolder del adaptador.

Después de esto, adjunte el adaptador en la actividad principal o donde quiera en el subproceso principal/UI correctamente como

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
Author: Neil Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 19:16:01

Resuelto estableciendo la lista vacía inicializada y el adaptador en la parte inferior y llamando a notifyDataSetChanged cuando se obtienen los resultados.

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    recyclerviewItems.setLayoutManager(linearLayoutManager);
    someAdapter = new SomeAdapter(getContext(),feedList);
    recyclerviewItems.setAdapter(someAdapter);
 0
Author: Tabraiz Malik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-17 23:33:59

Perdí 16 minutos de mi vida con este problema, así que solo admitiré este error increíblemente embarazoso que estaba cometiendo: estoy usando Butterknife y enlazo la vista en onCreateView en este fragmento.

Tomó mucho tiempo averiguar por qué no tenía layoutmanager, pero obviamente las vistas se inyectan para que en realidad no sean nulas, por lo que el reciclador nunca será nulo .. whoops!

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

Si tiene un problema como este, rastree su vista y use algo como uiautomatorviewer

 0
Author: Saik Caskey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-04 16:26:05

Para aquellos que usan el RecyclerView dentro de un fragmento y lo inflan desde otras vistas: al inflar toda la vista de fragmento, asegúrese de vincular el RecyclerView a su vista raíz.

Estaba conectando y haciendo todo para el adaptador correctamente, pero nunca hice el enlace. Esta respuesta de @Prateek Agarwal lo tiene todo para mí, pero aquí hay más elaboración.

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
Author: N. Osil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-04 09:12:52

No es una gran respuesta, pero yo también estaba teniendo el mismo problema, incluso con el código correcto. A veces, es la más simple de las marcas. En este caso, el error del OP también puede faltar <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> en el Manifiesto, que reproduce el mismo error.

 0
Author: SpicyWeenie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-17 05:40:20