1

E/RecyclerView: No adapter attached; skipping layout

Activity_agent.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".AgentActivity">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recylcerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout_editor_absoluteX="745dp"
    tools:layout_editor_absoluteY="-51dp" />
</RelativeLayout>

moole.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">
    <TextView
        android:id="@+id/idagent"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginTop="20dp"
        android:text="1"
        android:textSize="30dp"
        android:singleLine="true" />
    <TextView
        android:id="@+id/nomagent"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginTop="20dp"
        android:layout_toRightOf="@+id/idagent"
        android:text="mohamed"
        android:textSize="30dp"
        android:textColor="@color/design_default_color_primary_dark"
        android:singleLine="true" />
</RelativeLayout>

</android.support.constraint.ConstraintLayout>

Agent.java

package com.exemple.android.espacemembre;

public class Agent {
    private int idagent;
    private String nomagent;
    private boolean disponible;
    private int id_admin;

public Agent(int id_agent,String nom_agent) {
    this.idagent=id_agent;
    this.nomagent=nom_agent;
 //   this.disponible=disponible;
  //  this.id_admin=id_admin;
}
public int getIdagent(){
    return idagent;
}
public String getNomagent(){
    return nomagent;
}

}

AgentActivity.java

package com.exemple.android.espacemembre;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class AgentActivity extends AppCompatActivity {

//this is the JSON Data URL
//make sure you are using the correct ip else it will not work
    private static final String URL_AGENT = 
     "http://192.168.43.174/php_agent.php";

    //a list to store all the products
    List<Agent> agentList;
      //the recyclerview
   public  RecyclerView recyclerView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_agent);
    //getting the recyclerview from xml
    recyclerView = findViewById(R.id.recylcerView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    //initializing the productlist
    agentList = new ArrayList<>();

    //this method will fetch and parse json
    //to display it in recyclerview
    loadAgent();


}
public void loadAgent(){
    /*
     * Creating a String Request
     * The request type is GET defined by first parameter
     * The URL is defined in the second parameter
     * Then we have a Response Listener and a Error Listener
     * In response listener we will get the JSON response as a String
     * */
    StringRequest stringRequest=new StringRequest(Request.Method.GET, 
URL_AGENT, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONArray array = new JSONArray(response);
                for (int i = 0; i < array.length(); i++) {
                    JSONObject agent = array.getJSONObject(i);
                    agentList.add(new Agent(
                            agent.getInt("idagent"),
                            agent.getString("nomagent")
                    ));

                }
                AgentAdapter adapter = new 
AgentAdapter(AgentActivity.this, agentList);
                recyclerView.setAdapter(adapter);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    Volley.newRequestQueue(this).add(stringRequest);
}

AgentFragment.java

package com.exemple.android.espacemembre;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;



public class AgentFragment extends Fragment {
    View rootView;
    public AgentFragment(){

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


          View rootView= 
         inflater.inflate(R.layout.activity_agent,container,false);

   return rootView;


}
}

AgentAdapter

      package com.exemple.android.espacemembre;

    import android.content.Context;
    import android.support.annotation.NonNull;
    import android.support.v7.widget.RecyclerView; 

     import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;

   import java.util.List;

 public class AgentAdapter extends 
 RecyclerView.Adapter<AgentAdapter.AgentViewHolder> {

private Context g_ctx;
private List<Agent> agentList;

public AgentAdapter(Context g_ctx,List<Agent>agentList){
    this.g_ctx=g_ctx;
    this.agentList=agentList;
}

@NonNull
@Override
public AgentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 
  viewType) {
   // LayoutInflater inflater = LayoutInflater.from(g_ctx);
   // View view = inflater.inflate(R.layout.moole, null);
      View v = 
LayoutInflater.from(parent.getContext()).inflate(R.layout.moole, parent, 
false);

   /* @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
{
        View v = 
LayoutInflater.from(parent.getContext()).inflate(R.layout.ingredient_row, 
parent, false);
        return new ViewHolder(v);*/
    return new AgentViewHolder(v);
}
@Override
public void onBindViewHolder(AgentViewHolder holder, int position) {
    //getting the product of the specified position
    Agent agent = agentList.get(position);
    //binding the data with the viewholder views
    holder.idagent.setText(String.valueOf(agent.getIdagent()));
    holder.nomagent.setText(agent.getNomagent());

}
@Override
public int getItemCount(){
    return agentList.size();
}
class AgentViewHolder extends RecyclerView.ViewHolder{

    TextView idagent ,nomagent;
    public AgentViewHolder(View itemView){
        super(itemView);
        idagent=itemView.findViewById(R.id.idagent);
        nomagent=itemView.findViewById(R.id.nomagent);

    }

}
}

agent.php

<?php 

/*
* Created by Belal Khan
* website: www.simplifiedcoding.net 
* Retrieve Data From MySQL Database in Android
*/

//database constants
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'espace_membre');

//connecting to database and getting the connection object
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

//Checking if any error occured while connecting
if (mysqli_connect_errno()) {
    echo "Failed to connect to agent: " . mysqli_connect_error();
    die();
}

//creating a query
$stmt = $conn->prepare("SELECT idagent ,nomagent FROM agent;");

//executing the query 
$stmt->execute();

//binding results to the query 
$stmt->bind_result($idagent, $nomagent);

$agent = array(); 

//traversing through all the result 
while($stmt->fetch()){
    $temp = array();
    $temp['idagent'] = $idagent; 
    $temp['nomagent'] = $nomagent; 


    array_push($agent, $temp);
}

//displaying the result in json format 
echo json_encode($agent);
?>`

E/RecyclerView: No adapter attached; skipping layout

data does not want to appear in the fragment

je veut realser une application de gestion dorder de mission pour une entreprise je doit recuperer les information des agents

ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96
houria
  • 11
  • 1

2 Answers2

0

You have to set AgentAdapter after setting LayoutManager, and then refresh the data set onResponse where you were setting adapter.

To refresh the data set just make a small function inside your AgentAdapter like:

public void refreshAgents(List<Agent> agentList){
     this.agentList.clear()
     this.agentList = agentList;
     notifyDataSetChanged()
}
Alex
  • 962
  • 4
  • 15
0

E/RecyclerView: No adapter attached;, data does not want to appear in the fragment home,

It's because your didn't add any data to your fragment but to your Activity.

E/RecyclerView: No adapter attached; skipping layout

It's because you never attached the adapter to your RecyclerView inside your Activity. You need to initialize your adapter first then attach it to your RecyclerView, with something like this:

List<Agent> agentList;

public  RecyclerView recyclerView;

// declare the adapter so it can be re-accessed later.
private AgentAdapter mAgentAdapter;

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

    //getting the recyclerview from xml
    recyclerView = findViewById(R.id.recylcerView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));


    //initializing the productlist
    agentList = new ArrayList<>();

    // initialize the adapter
    mAgentAdapter = new AgentAdapter(this, agentList);

    // attach the adapter to the RecyclerView
    recyclerView.setAdapter(mAgentAdapter);

    ...
}

Then, whenever you change the whole list for the adapter tell it to refresh:

// sample of adding data from your backend.
for (int i = 0; i < array.length(); i++) {
    JSONObject agent = array.getJSONObject(i);
    agentList.add(new Agent(
            agent.getInt("idagent"),
            agent.getString("nomagent")
    ));

}

// update the adapter.
mAgentAdapter.notifyDataSetChanged();
ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96