NeoKerd
NeoKerd

Reputation: 219

Why do this recyclerview never appear?

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

Answers (4)

Smile
Smile

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

Himani
Himani

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

JackHuynh
JackHuynh

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

Nour Eldien Mohamed
Nour Eldien Mohamed

Reputation: 961

what about if your response is not equal null try remove this if statement

Upvotes: 1

Related Questions