0

我正在onCreateViewHolderRecycleView. 我需要根据数据项值向右或向左对齐。

如果我以该方法设置视图的布局参数,它们将被 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);
}
4

2 回答 2

1

根据数据项的数据所做的任何事情都应该在onBindViewHolder中完成,而不是在onCreateViewHolder中。在创建时,您应该只设置正确的内容,而不管实际数据绑定或绑定位置如何。所有数据和位置特定设置都在 onBindViewHolder 中完成。

于 2017-10-10T21:28:36.853 回答
0

发现。我认为那holder.itemView是我添加的复合视图。我需要使用findViewById来获取复合视图并将参数设置为该视图。因此,解决方案是从 itemView 中找到 Compound View,如下所示:

View v = holder.itemView.findViewById(android.R.id.content);

然后将参数应用于问题中发布的此视图。

于 2017-10-10T23:02:39.620 回答