I'm using Adapter to introduce my data from the DB to a layout - kind of inbox page.
when I debuegging i see in my console the Error "no adapter attached, skipping layout"
i think it happens because the line: <android.support.v7.widget.RecyclerView
is not working. (that line is in the XML)
i understand that this tag is no more working in android and for the new version i should put this line:
<androidx.recyclerview.widget.RecyclerView
but that's not working either.
someone maybe know how should i fix this?
put my code here just in case.. InboxDoctor.JAVA
public class InboxDoctor extends AppCompatActivity {
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.loginregister.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.time.Clock;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
private RecyclerView recyclerView;
private AdapterActivity adapter;
private List<ModelActivity> modelActivityList;
private RelativeLayout relativeLayout;
private HashMap<Integer,String> repMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox_doctor);
relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
recyclerView = (RecyclerView)findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
modelActivityList = new ArrayList<>();
StringRequest stringRequest = new StringRequest(Request.Method.POST,
URLs.URL_INBOXDR,
//lambda expression
response -> {
relativeLayout.setVisibility(View.GONE);
//repMap = new HashMap<Integer,String>();
try {
JSONObject repObj = new JSONObject(response);
JSONArray repArray = repObj.getJSONArray("report");
JSONObject jObg = new JSONObject();
ModelActivity modelActivity = new ModelActivity();
for(int i=0; i<=repArray.length(); i++){
jObg = repArray.getJSONObject(i);
modelActivity.setId(jObg.getInt("id"));
modelActivity.setSentTime(jObg.getString("sent_time"));
modelActivity.setPatientId(jObg.getString("patient_id"));
modelActivity.setTestName(jObg.getString("name"));
modelActivity.setUrgent(jObg.getInt("is_urgent"));
modelActivityList.add(modelActivity);
System.out.println(modelActivityList.get(i).getId());
}
adapter = new AdapterActivity(modelActivityList,getApplicationContext());
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
},
//lambda expression
error -> Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show())
{
@Nullable
@Override
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("department", String.valueOf(SharedPrefManager.getInstance(getApplicationContext()).getUser().getDepartment()));
System.out.println(params.get("department"));
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
AdapterActivity.JAVA:
package il.reportap;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.loginregister.R;
import java.util.List;
import java.util.Random;
public class AdapterActivity extends RecyclerView.Adapter<AdapterActivity.ViewHolder>{
private List<ModelActivity> modelActivityList ;
private Context context;
public AdapterActivity(List<ModelActivity> modelActivityList, Context context) {
this.modelActivityList = modelActivityList;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_layout,parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ModelActivity modelActivity = modelActivityList.get(position);
holder.sentTime.setText(modelActivity.getSentTime());
holder.patientId.setText(modelActivity.getPatientId());
holder.testName.setText(modelActivity.getTestName());
holder.isUrgent.setText(modelActivity.getIsUrgent());
}
@Override
public int getItemCount() {
return modelActivityList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView sentTime, patientId,testName,isUrgent;
public ViewHolder(View itemView) {
super(itemView);
sentTime = (TextView)itemView.findViewById(R.id.sentTime);
patientId = (TextView)itemView.findViewById(R.id.patientId);
testName = (TextView)itemView.findViewById(R.id.testName);
isUrgent = (TextView)itemView.findViewById(R.id.isUrgent);
}
}
}
the piece of code in inbox_doctor.xml:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context="il.reportap.InboxDoctor">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relativeLayout"
tools:context="abhiandroid.com.jsonparsingexample.MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
thank you for your help!