2016-08-21 2 views
0

Ich baue eine App auf Android und bin mit mehreren Recyclerviews.Benutzerdefinierte ItemDecoration nicht auf der letzten Ansicht von RecyclerView gezeichnet

In der ersten Seite, die ich eine Recyclerview verwendet, funktionierte alles einwandfrei und meine benutzerdefinierte ItemDecoration (Teiler) wurde auf alle Ansichten angewendet.

Dann habe ich eine neue Seite gestartet, in der ich den gleichen Teiler auf einem ähnlichen RecyclerView verwende, aber auf dem letzten Listenelement ist der untere Teiler nicht vorhanden.

Da es funktioniert perfekt an einem Ort, glaube ich nicht, dass das Problem mit der benutzerdefinierten ItemDecoration-Klasse, noch mit der XML ist. Ich habe auch versucht, den gleichen Viewholder für den zu verwenden, der funktioniert hat, aber der letzte Teiler wurde nicht gezeichnet.

hier ist der Code, wo ist mein Adapter in der problematischen recyclerview einzurichten:

private void setUpPracticesList() { 
    lstPractices = (RecyclerView) getActivity().findViewById(R.id.lstPractices); 
    lstPractices.setLayoutManager(new LinearLayoutManager(getActivity())); 

    RecyclerView.Adapter<PracticeHolder> adapter = new RecyclerView.Adapter<PracticeHolder>() { 

     String[] titles = getResources().getStringArray(R.array.practices_names); 
     int[] imageIds = {R.drawable.consultation_meeting_icon, 
       R.drawable.monitoring_meeting_icon, 
       R.drawable.parent_lectures_icon, 
       R.drawable.parent_support_groups_icon, 
       R.drawable.staff_courses_icon}; 

     @Override 
     public PracticeHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.kidsense_practices_list_item, parent, false); 

      return new PracticeHolder(v); 
     } 

     @Override 
     public void onBindViewHolder(PracticeHolder holder, int position) { 
      holder.setName(titles[position]); 
      holder.setImage(imageIds[position]); 
     } 

     @Override 
     public int getItemCount() { 
      return titles.length; 
     } 
    }; 

    lstPractices.setAdapter(adapter); 
    lstPractices.setHasFixedSize(true); 
    lstPractices.addItemDecoration(new DividerItemDecoration(getActivity(), null)); 
} 

hat jemand irgendwelche Ideen?

Antwort

0

Ich habe die Lösung gefunden:

, was ich gefunden habe, ist, dass ein recyclerview keinen Teiler am unteren Rande der letzten Ansicht zeigen, wenn kein Platz mehr in der recyclerview links ist.

In meinem Fall war das Problem, dass mein recyclerview in einem Layout war, das eine Höhe von "wrap_content" hatte, was bedeutet, dass es keinen zusätzlichen Platz unter der Recycleransicht gab, um den Teiler anzuzeigen. Sobald ich mein Layout neu angeordnet hatte, so dass meine Recycleransicht mehr Platz darunter mit einer übergeordneten Layouthöhe von "match_parent" hatte, wurde der letzte Teiler angezeigt.

Verwandte Themen