Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未在RecyclerView的最后一个视图上绘制自定义项装饰_Android_Android Recyclerview - Fatal编程技术网

Android 未在RecyclerView的最后一个视图上绘制自定义项装饰

Android 未在RecyclerView的最后一个视图上绘制自定义项装饰,android,android-recyclerview,Android,Android Recyclerview,我正在android上构建一个应用程序,并且正在使用几个recyclerviews 在我使用recyclerview的第一个页面中,一切都完美无瑕,我的自定义ItemDecoration(分隔符)应用于所有视图 然后我开始了一个新页面,在这个页面中,我在一个类似的RecyclerView上使用了相同的分隔符,但在最后一个列表项上,底部的分隔符不存在 看到它在一个地方完美地工作,我不认为问题出在定制ItemDecoration类上,也不存在于xml上。我也试着使用同一个viewholder,但最后

我正在android上构建一个应用程序,并且正在使用几个recyclerviews

在我使用recyclerview的第一个页面中,一切都完美无瑕,我的自定义ItemDecoration(分隔符)应用于所有视图

然后我开始了一个新页面,在这个页面中,我在一个类似的RecyclerView上使用了相同的分隔符,但在最后一个列表项上,底部的分隔符不存在

看到它在一个地方完美地工作,我不认为问题出在定制ItemDecoration类上,也不存在于xml上。我也试着使用同一个viewholder,但最后一个分隔符仍然没有绘制出来

以下是在问题回收视图中设置我的适配器的代码:

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));
}
private void setUpPracticesList(){
lstPractices=(RecyclerView)getActivity().findViewById(R.id.lstPractices);
setLayoutManager(新的LinearLayoutManager(getActivity());
RecyclerView.Adapter=新的RecyclerView.Adapter(){
String[]titles=getResources().getStringArray(R.array.practices\u name);
int[]imageIds={R.drawable.consultation\u meeting\u图标,
R.drawable.monitoring\u meeting\u图标,
R.drawable.parent\u图标,
R.drawable.parent\u支持\u组\u图标,
R.drawable.staff\u courses\u icon};
@凌驾
public PracticeHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.kidsense\u practices\u list\u项,parent,false);
返回新的执业持有人(v);
}
@凌驾
BindViewHolder上的公共无效(PracticeHolder,内部职位){
持有人名称(头衔[职位]);
holder.setImage(imageid[位置]);
}
@凌驾
public int getItemCount(){
返回标题。长度;
}
};
lst.setAdapter(适配器);
lstPractices.setHasFixedSize(true);
addItemDecoration(新的DividerItemDecoration(getActivity(),null));
}

有人有什么想法吗?

我找到了解决方案:

我发现,如果recyclerview中没有更多空间,那么recyclerview将不会在最后一个视图的底部显示分隔符

在我的例子中,问题是我的recyclerview的布局高度为“wrap_content”,这意味着在recyclerview下没有多余的空间来显示分隔符。当我重新安排我的布局,使我的recyclerview下面有更多的空间,父布局高度为“match_parent”时,最终的分隔符显示出来