如何为在 RecycleView 适配器中添加的视图设置布局参数?
How to set layout parameters for view added at RecycleView adaptor?
我正在 onCreateViewHolder
上为 RecycleView
的每个数据项添加一个复合视图。
我需要根据数据项值向右或向左对齐。
如果我在该方法中设置视图的布局参数,它们将被 xml 布局文件中的值覆盖。
我能想出的唯一解决方案是拥有 2 个不同的布局文件,但不必要的重复文件。
知道如何通过代码完成此操作吗?
更新:我也在 onBindViewHolder 上尝试,代码如下。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
View v = holder.itemView;
//to simplify i try to aling all to the rigth
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_END); //this settins has effect if defined on the layout file
v.setLayoutParams(params);
}
任何根据数据项的数据做的事情都应该在onBindViewHolder中完成,而不是在onCreateViewHolder中。在创建时,您应该只设置正确的内容,而不管实际数据绑定或其绑定位置如何。所有数据和位置特定设置都在 onBindViewHolder 中完成。
发现了。我假设 holder.itemView
是我添加的复合视图。我需要使用 findViewById
来获取复合视图并将参数设置到该视图。
因此,解决方案是从 itemView 中找到复合视图,如下所示:
View v = holder.itemView.findViewById(android.R.id.content);
然后将参数应用于问题中发布的此视图。
我正在 onCreateViewHolder
上为 RecycleView
的每个数据项添加一个复合视图。
我需要根据数据项值向右或向左对齐。
如果我在该方法中设置视图的布局参数,它们将被 xml 布局文件中的值覆盖。
我能想出的唯一解决方案是拥有 2 个不同的布局文件,但不必要的重复文件。
知道如何通过代码完成此操作吗?
更新:我也在 onBindViewHolder 上尝试,代码如下。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
View v = holder.itemView;
//to simplify i try to aling all to the rigth
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_END); //this settins has effect if defined on the layout file
v.setLayoutParams(params);
}
任何根据数据项的数据做的事情都应该在onBindViewHolder中完成,而不是在onCreateViewHolder中。在创建时,您应该只设置正确的内容,而不管实际数据绑定或其绑定位置如何。所有数据和位置特定设置都在 onBindViewHolder 中完成。
发现了。我假设 holder.itemView
是我添加的复合视图。我需要使用 findViewById
来获取复合视图并将参数设置到该视图。
因此,解决方案是从 itemView 中找到复合视图,如下所示:
View v = holder.itemView.findViewById(android.R.id.content);
然后将参数应用于问题中发布的此视图。