Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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 如何为RecycleView适配器上添加的视图设置布局参数?_Android_Android Recyclerview_Android Compound View - Fatal编程技术网

Android 如何为RecycleView适配器上添加的视图设置布局参数?

Android 如何为RecycleView适配器上添加的视图设置布局参数?,android,android-recyclerview,android-compound-view,Android,Android Recyclerview,Android Compound View,我正在为RecycleView的每个数据项在onCreateViewHolder上添加一个复合视图。 我需要根据数据项值向右或向左对齐 如果我在该方法中设置视图的布局参数,它们将被xml布局文件上的值覆盖 我能想出的唯一解决方案是有两个不同的布局文件,但不必要的重复文件 你知道如何通过代码来实现吗 更新:我还尝试了onBindViewHolder,代码如下 @Override public void onBindViewHolder(ViewHolder holder, int positi

我正在为
RecycleView
的每个数据项在
onCreateViewHolder
上添加一个复合视图。 我需要根据数据项值向右或向左对齐

如果我在该方法中设置视图的布局参数,它们将被xml布局文件上的值覆盖

我能想出的唯一解决方案是有两个不同的布局文件,但不必要的重复文件

你知道如何通过代码来实现吗

更新:我还尝试了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);
然后将参数应用于问题中发布的视图