Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 带有GridLayout的Recyclerview。仅当下一项的日期不同时,才添加分隔符_Android_Android Recyclerview_Grid Layout - Fatal编程技术网

Android 带有GridLayout的Recyclerview。仅当下一项的日期不同时,才添加分隔符

Android 带有GridLayout的Recyclerview。仅当下一项的日期不同时,才添加分隔符,android,android-recyclerview,grid-layout,Android,Android Recyclerview,Grid Layout,我有一个RecyclerView和GridLayout。我的数据是按日期排序的对象的列表。我需要添加一个分隔符,如果下一个项目有不同的日期,当前一个。这是我的班级: public class ImageContentFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle

我有一个
RecyclerView
GridLayout
。我的数据是按日期排序的对象的
列表。我需要添加一个分隔符,如果下一个项目有不同的日期,当前一个。这是我的班级:

public class ImageContentFragment extends Fragment  {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    recyclerView = (RecyclerView) mainView.findViewById(R.id.rc_recycler_view);
    adapter = new ContentAdapter(recyclerView.getContext());
    recyclerView.setAdapter(adapter);
    recyclerView.setHasFixedSize(true);
    int tilePadding = getResources().getDimensionPixelSize(R.dimen.tile_padding);
    recyclerView.setPadding(tilePadding, tilePadding, tilePadding, tilePadding);
    recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), sPrefs.getInt(GRID_COL_KEY, GRID_SPAN_COUNT)));
    return mainView;
}

public class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.MyViewHolder> {

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public ImageView picture;
        public TextView name;
        public boolean selected = false;
        public MyViewHolder(View view) {
            super(view);
            picture = (ImageView) itemView.findViewById(R.id.tile_picture);
            name = (TextView) itemView.findViewById(R.id.tile_title);
        }
    }

    public ContentAdapter(Context context) {
        mUlrPictures = getImageUrlForFolder(mediaStorageDir);
    }

    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false);
        GridLayoutManager.LayoutParams lp = (GridLayoutManager.LayoutParams) v.getLayoutParams();
        lp.height = sPrefs.getInt(ICON_SIZE_KEY, ITEM_HEIGHT_MEDIUM);
        v.setLayoutParams(lp);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
            String imUrl = mUlrPictures.get(position % mUlrPictures.size()).getUrl();
            holder.name.setText(mUlrPictures.get(position % mUlrPictures.size()).getUrl());
            holder.selected = mUlrPictures.get(position % mUlrPictures.size()).getSelected();
        }
    }

    @Override
    public int getItemCount() {
        return mUlrPictures.size();
    }

}

}
公共类ImageContentFragment扩展了片段{
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
recyclerView=(recyclerView)mainView.findViewById(R.id.rc\u recycler\u视图);
adapter=newcontentadapter(recyclerView.getContext());
recyclerView.setAdapter(适配器);
recyclerView.setHasFixedSize(true);
int tilePadding=getResources().getDimensionPixelSize(R.dimen.tile\u padding);
recyclerView.setPadding(瓷砖添加、瓷砖添加、瓷砖添加、瓷砖添加);
setLayoutManager(新的GridLayoutManager(getActivity(),sPrefs.getInt(GRID\u COL\u KEY,GRID\u SPAN\u COUNT));
返回主视图;
}
公共类ContentAdapter扩展了RecyclerView.Adapter{
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
公众图片;
公共文本视图名称;
选择公共布尔值=false;
公共MyViewHolder(视图){
超级(视图);
picture=(ImageView)itemviewbyd(R.id.tile\u picture);
name=(TextView)itemView.findViewById(R.id.tile\u title);
}
}
公共内容适配器(上下文){
mUlrPictures=getImageUrlForFolder(mediaStorageDir);
}
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.item_image,parent,false);
GridLayoutManager.LayoutParams lp=(GridLayoutManager.LayoutParams)v.getLayoutParams();
lp.height=sPrefs.getInt(图标大小键,项目高度中位);
v、 setLayoutParams(lp);
返回新的MyViewHolder(v);
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
字符串imUrl=mUlrPictures.get(位置%mUlrPictures.size()).getUrl();
holder.name.setText(mUlrPictures.get(位置%mUlrPictures.size()).getUrl());
holder.selected=mUlrPictures.get(位置%mUlrPictures.size()).getSelected();
}
}
@凌驾
public int getItemCount(){
返回mUlrPictures.size();
}
}
}

最好的方法是什么?添加一个带有分隔符的文本视图也很好。

在item_image.xml文件中添加一个高度为2dp、宽度为fill_的视图,它可以用作分隔符,也可以分配id

onBindViewHolder方法写入一个逻辑,根据位置检查日期,如果为真,则使其在分隔器视图中可见,如果不是,则使分隔器视图消失


希望这对您有所帮助

这是一个网格布局。此分隔符将只占用一列。