Reputation: 219
i use to work with recyclerview in my applications. but i still can't find where the problem is, that's why I ask a new question.
So I have a new recyclerview with the same pattern that another one. So I take the same adapter. With the debug of android studio I see that everything is going well.
There is my code :
recyclerView_visites=findViewById(R.id.recyclerview_liste_visites_article);
recyclerView_visites.setHasFixedSize(true);
recyclerView_visites.setLayoutManager(layoutManager);
recyclerView_visites.setAdapter(myAdapterVisitesClient);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
Log.e("onResponse: "," " + response );
if(response.equals("null")){
idVisite.add("");
obsVisite.add("Aucune visite pour cet article");
typeVisite.add("");
dateVisite.add("");
nomPersonnelVisite.add("");
myAdapterVisitesClient.getList(dateVisite,nomPersonnelVisite,idVisite,obsVisite,typeVisite);
recyclerView_visites.setLayoutManager(layoutManager);
recyclerView_visites.setAdapter(myAdapterVisitesClient);
In this case the if is true.
There is the adapter :
{
private List<Pair<String, String>> Visite = new ArrayList<>();
private List<String> IdVisite = new ArrayList<>();
private List<String> observations = new ArrayList<>();
private List<String> typeVisite = new ArrayList<>();
public void getList(ArrayList<String> dateVisite, ArrayList<String> nomPers, ArrayList<String> idVisite, ArrayList<String> p_obs, ArrayList<String> p_type){
Visite.clear();
Date date1;
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat dt2 = new SimpleDateFormat("dd/MM/yyyy");
for(int i =0; i<nomPers.size();i++){
try {
observations.add(p_obs.get(i));
IdVisite.add(idVisite.get(i));
if(!dateVisite.get(i).isEmpty()){
date1= dt.parse(dateVisite.get(i));
Visite.add(Pair.create(nomPers.get(i), dt2.format(date1)));
}else{
Visite.add(Pair.create(nomPers.get(i),""));
}
typeVisite.add(p_type.get(i));
} catch (ParseException e) {
e.printStackTrace();
}
}
this.notifyDataSetChanged();
}
public String getNomPers(int position){
return Visite.get(position).first;
}
public String getDateVisite(int position){
return Visite.get(position).second;
}
public String getId(int position){
String id = IdVisite.get(position);
return id;
}
public String getObs(int position){return observations.get(position);}
public String getType(int position){return typeVisite.get(position);}
//public String getDatebdd(int position){ return datebdd.get(position);}
@NonNull
@Override
public MyAdapterVisiteClient.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.list_cell_visites_client, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyAdapterVisiteClient.MyViewHolder holder, int position) {
Pair<String, String> pair = Visite.get(position);
holder.display(pair, position);
}
@Override
public int getItemCount() {
return Visite.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private TextView nomPers;
private TextView dateVisite;
private TextView observation;
private TextView typeVisite;
private Pair<String, String> currentPair;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
nomPers=(TextView)itemView.findViewById(R.id.nomPers);
dateVisite=(TextView)itemView.findViewById(R.id.dateVisite);
observation=(TextView)itemView.findViewById(R.id.tv_list_obs_visite_cli);
typeVisite=(TextView)itemView.findViewById(R.id.typeVisteCli);
}
public void display(Pair<String, String> pair, int position) {
currentPair=pair;
nomPers.setText(pair.first);
dateVisite.setText(pair.second);
observation.setText(getObs(position));
typeVisite.setText(getType(position));
}
}
}
There is my layout :
<LinearLayout 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=".ListeTiVisitesArticle"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="vertical"
android:background="@color/BlueDarker">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:id="@+id/tv_nom_cli_liste_vi_ti_article"
android:textColor="@android:color/white"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:text="Nom Client"
></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Liste des visites : "
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/black"
/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="10dp"
android:id="@+id/recyclerview_liste_visites_article"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Liste des TI : "
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/black"/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="10dp"
android:id="@+id/recyclerview_liste_ti_article"/>
</LinearLayout>
</LinearLayout>
Thank's for help
Upvotes: 0
Views: 99
Reputation: 207
Have you tried giving the LinearLayout that contains your RecyclerView a fixed height, then use match_parent on the RecyclerView?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="400dp"
android:orientation="vertical">
Upvotes: 1
Reputation: 459
Try to check the size of the array which you get from the response. Else try to change layout height to wrap content or fixed-sized.
Is there inflater in your adapter - onCreateViewHolder?
View view = mInflater.inflate(R.layout.card_item, parent, false); return new ClientListAdapter.ViewHolder(view);
Upvotes: 1
Reputation: 74
Can you try to move the line LinearLayoutManager
above setLayoutManager
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView_visites.setLayoutManager(layoutManager);
recyclerView_visites.setAdapter(myAdapterVisitesClient);
Upvotes: 1
Reputation: 961
what about if your response is not equal null try remove this if statement
Upvotes: 1