我想实现一个网格布局,它能够基于位置跨越多个行和列。假设跨度计数为3。项目位置零,取两行跨和两列跨,项目位置一取两列跨和一行跨项目位置二,取一列跨和一行跨项目位置三,取一列跨和一行跨
基本上,我希望视图根据其位置跨越各种列和行。
我尝试使用SetPansizeLookup方法使用回收视图的GridLayoutManager,但它跨越了水平或垂直视图。
我发现twowayview可以用于跨越多个列和行,但我不确定如何在我的项目中实现,因为它是一个广泛的库(在android studio中设置它时遇到问题)。
有人能提出最佳方法吗?
在研究你的问题时,我学到了一些新的东西:我碰巧查看了GridLayoutManager for RecycleView,我注意到您可以设置自定义的SpanSizeLookup。现在,如果您垂直滚动,“跨度”只是一列,如果您水平滚动,则是一行。因此,SpanSizeLookup允许您指定例如,第0项需要2列,第1项需要1列,等等。
事实证明,如果您将RecycleView与GridLayoutManager一起使用,解决方案很简单:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create a grid layout with two columns
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
// Create a custom SpanSizeLookup where the first item spans both
columns
layoutManager.setSpanSizeLookup(new
GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return position == 0 ? 2 : 1;
}
});
RecyclerView recyclerView = (RecyclerView)
findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new MyGridAdapter());
}
关于适配器的注意事项:RecyclerView。适配器与ListAdapter不兼容。您需要从RecyclerView扩展您的适配器。适配器并进行适当的更改。
以下是我为测试项目创建的适配器:
public static class MyViewHolder extends RecyclerView.ViewHolder {
ImageView mImageView;
TextView mTextView;
public MyViewHolder(View itemView) {
super(itemView);
mImageView = (ImageView) itemView.findViewById(R.id.imageView);
mTextView = (TextView) itemView.findViewById(R.id.textView);
}
}
public static class MyGridAdapter extends
RecyclerView.Adapter<MyViewHolder> {
private int[] mDrawables;
public MyGridAdapter() {
this.mDrawables = new int[] {
R.drawable.images_01,
R.drawable.images_02,
.
.
.
};
}
@Override
public int getItemCount() {
return mDrawables.length;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int
viewType) {
LayoutInflater inflater = (LayoutInflater)
parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.layout_grid_item, parent,
false);
MyViewHolder holder = new MyViewHolder(view);
// set up any onClickListener you need on the view here
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.mImageView.setImageResource(mDrawables[position]);
holder.mTextView.setText("Image " + position);
}
}
Here xml of Activity
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.syneotek.gridlayoutmanagerdemo.Demo2">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerview">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
下面是网格item\u列表的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" >
</ImageView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text1"
android:layout_gravity="bottom"
android:gravity="center"
android:textStyle="bold"
android:textAppearance="?android:textAppearanceMedium"
android:text="Munaf Patel"/>
</LinearLayout>
Best of Luck.
我有一个这样的数据集 我想创建列(visit_no)。每当间隙大于1时,我们需要在接下来的行中将visit_no值增加1,直到我们找到另一个值,它将保持不变 这是数据框架
谈到R编码,我目前有点墨守成规。我一直在尝试使用mutate、seq和rep函数来生成一个新列,该列迭代多个列值和不同的条件,但结果并不正确。下面是我的一些数据片段: 我希望按类型和特征 ID 对 lipidName 进行分组,然后查看类型特征 ID2,而不是不正确的数据表。如果它们具有相同的类型和特征 ID,则将它们计为脂质名称的相同脂质。如果它们具有相同的类型和特征ID2,则将它们计为脂质名称
我想将我的自定义函数(它使用if-else梯形)应用到数据帧每行中的这六列(,,,,,)。 我已经尝试了不同的方法从其他问题,但似乎仍然不能找到正确的答案,我的问题。关键的一点是,如果这个人被算作西班牙裔,他们就不能算作其他任何东西。即使他们在另一个种族栏中有一个“1”,他们仍然被算作西班牙裔,而不是两个或两个以上的种族。类似地,如果所有ERI列的总和大于1,则被计为两个或两个以上的种族,不能被计
我有一个国家和年份级别的面板数据集,我想根据现有的变量创建两个新变量。 我想做的是创建两个新变量集:(1)每年(跨国家)平均值的变量集和(2)国家/地区值相对于年平均值的变量集。例如,对于 var1(1) 将产生 mean_var1 和 (2) relmean_var1我希望这些变量用于所有其他变量。总的来说,数据集中有超过1000个变量,但我只将此函数应用于大约6个。 我有适用于第一部分的代码,
我试图为数据集创建多水平条形图。这些数据涉及跑步比赛的比赛时间。 Dataframe有以下列:名称、年龄组、完成时间、完成地点、家乡。下面是示例数据。 我想创建一个类似下图的条形图。每个年龄组将有一个条形图,最快的跑步者在图表的底部,跑步者的名字与城市和次数跑了比赛低于他们的名字。 我需要一个for循环还是一个简单的groupby工作?每个年龄组的数量和大小可以根据种族动态变化,因此它不是一个常数
问题内容: 我有一个时序DataFrame,我想复制我的200个功能/列中的每一个作为其他滞后功能。因此,目前我在时间t处具有要素,并希望在时间步t-1,t-2等处创建要素。 我知道最好用df.shift()来完成,但是我很难将其完全合并。我还想将列重命名为“功能(t-1)”,“功能(t-2)”。 我的伪代码尝试将是这样的: 最后,如果我有200列和4个滞后时间步长,那么我将拥有一个具有1000个