目前,我正在探索有关RecyclerView和GridLayoutManager的更多信息,并试图为gallery显示实现一个好看的UI,但我对GridLayoutManager的跨度大小有一些问题。正如文档所述:默认情况下,每个项目占用1个跨度。您可以通过提供自定义GridLayoutManager来更改它。SpanSizeLookup实例,通过setPansizeLookup(SpanSizeLookup)。
有了这个,我希望如果我将位置0中项目的跨度设置为2,它也会将colspan和rowspan设置为2,但似乎不是这样。对于GridLayoutManager,我将列数设置为2(纵向),将列数设置为4(横向)。它非常适合纵向,但不适合横向,因为它在第二个和第三个项目下创建了2个空单元格,我猜第一个项目没有得到2的行宽,否则它实际上会留下一个空单元格。
这是我的代码:
gallery = new ArrayList<HashMap<String, String>>();
adapter = new GalleryAdapter(getBaseContext(), gallery);
// using grid layout manager
GridLayoutManager mLayoutManager = new GridLayoutManager(this, getResources().getInteger(R.integer.col_count));
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(adapter.getItemViewType(position)){
case 2:
return 2;
case 1:
return 1;
default:
return -1;
}
}
});
list_news.setLayoutManager(mLayoutManager);
list_news.setAdapter(adapter);
适配器:
public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> {
Context context;
ArrayList<HashMap<String, String>> article;
ImageLoader mImageLoader;
@Override
public int getItemCount() {
return article.size();
}
public GalleryAdapter(Context context, ArrayList<HashMap<String, String>> article){
this.context = context;
this.article = article;
}
// Create new views (invoked by the layout manager)
@Override
public GalleryAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.articles_item, parent, false);
// set the view's size, margins, paddings and layout parameters
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public int getItemViewType(int position) {
// Just as an example, return 0 or 2 depending on position
// Note that unlike in ListView adapters, types don't have to be contiguous
if(position==0){
return 2;
}else{
return 1;
}
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
mImageLoader = VolleyQueue.getInstance(context).getImageLoader();
holder.image.setImageUrl(article.get(position).get("image"), mImageLoader);
holder.image.setDefaultImageResId(R.drawable.test);
}
static class ViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.image) NetworkImageView image;
public ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
下面是横向和纵向的结果截图:
有什么办法可以避免我有空白的牢房吗?
更新:
为了更好地可视化我想要实现的目标,这里有一个我想要的横向模式的图像。数字是基于预期位置的项目。
将代码更改为
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return adapter.getItemViewType(position);
}
});
以及适配器的
@Override
public int getItemViewType(int position) {
if (position == 0) {
return context.getResources().getInteger(R.integer.col_count);
} else {
return 1;
}
}
读取文件已支持 windows 系统,版本号大于等于 1.3.4.1; 扩展版本大于等于 1.2.7; PECL 安装时将会提示是否开启读取功能,请键入 yes; 测试数据准备 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); // 写入测试数据 $filePath = $excel->f
添加/home/cloudera/date.jar到类路径添加资源:/home/cloudera/date.jar 请有人帮帮我,因为我是新来蜂巢的。有人能告诉我要遵循的步骤吗
因此,在excel中,我试图去掉包含信息的单元格之间的空白单元格,使用F5找到空白单元格,然后用Ctrl+-删除它们,并向上移动单元格。但当我尝试这样做时,它告诉我“没有发现细胞”。 所以我的问题是,我怎么还能做到这一点,但这些空白单元格Excel认为不是空白的?我试着通过并只按删除空白单元格,但我有很多数据,并意识到这将花费我太长的时间。我需要找到一种方法来选择这些‘空白’单元格的数据选择。 提
我一直试图创建一个宏来格式化从特定外部源复制的表,问题是,一些单元格似乎从右向左填充,剩余的空间向左填充空格:
我一直在用POI编写一个代码来将数据输入到Excel表中。首先,我需要遍历一组行,我不确定其中有多少行,可能是10或100行。但我发现末尾有一个空白单元格。在那个空白之后,又有一组行。我不担心第二盘。我需要找到第一盘是否已经结束。 这很让人困惑。现在我有5个用户在我的工作表如下所示。在第5个用户之后有一个空白单元格。我试图打印所有的用户,如果有一个空白停止它。
我无法将此行的样式设置为: 它给我的错误是“无法在基元类型void上调用setCellValue(String)”。这种情况下的错误是什么?我如何在单行代码中实现所有3个目标?