获取RecyclerView实例onCreateViewHolder来设置params

时间:2016-05-17 11:25:10

标签: android android-layout android-recyclerview

好吧,伙计们,我需要找到一种方法来改变RecyclerView的方向更改顶部的距离,因为它在水平和垂直方面有所不同,我得到了这个项目,onBindViewHolder,但我还需要设置参数对于RecyclerView,以下代码不起作用:

public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    final View view = this.layoutInflater.inflate(R.layout.row_item, parent, false);
    // Create layout params for the RecyclerView
    RecyclerView.LayoutParams params
        = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                                           ViewGroup.LayoutParams.MATCH_PARENT);
    // Set them margins
    params.setMargins(0, spanCount * 500, 0, spanCount * 10);
    // Get reference, this doesn't work
    RecyclerView rv = (RecyclerView) parent.getChildAt(0); // Doesn't work
    rv.setLayoutParams(params); // <- Throws NPE
    return new ItemViewHolder(view);
}

我也尝试将RecyclerView转换为父级和视图,但也没有工作。

3 个答案:

答案 0 :(得分:1)

只需将RecyclerView的引用传递给Adapter的构造函数。

答案 1 :(得分:1)

如果要更新RecyclerView的LayoutParameters,它不应该在适配器中。片段/活动必须处理方向更改并在需要时更新LayoutParam。

答案 2 :(得分:0)

如果您想在更改屏幕方向时更改RecyclerView的布局,为什么不在onConfigurationChanged更改它?