android 绑定布局,android – 在数据绑定中设置动态布局高度

我想在数据绑定结构中设置动态布局高度.

我试了一下,但我得到了这个例外:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference

at databinding.ItemGroupCommentsBinding.executeBindings(ItemGroupCommentsBinding.java:147)

at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:355)

at view.base.adapter.DataBindingAdapter.onBindViewHolder(DataBindingAdapter.java:32)

at view.base.adapter.DataBindingAdapter.onBindViewHolder(DataBindingAdapter.java:15)

at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6279)

at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6312)

at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5258)

at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5521)

at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5363)

at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5359)

at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2141)

at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:556)

at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1488)

at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:585)

at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)

at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3506)

at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3254)

at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3767)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:636)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)

at android.widget.FrameLayout.onLayout(FrameLayout.java:508)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)

at android.widget.FrameLayout.onLayout(FrameLayout.java:508)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)

at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)

at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)

at android.widget.FrameLayout.onLayout(FrameLayout.java:508)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)

at android.widget.FrameLayout.onLayout(FrameLayout.java:508)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)

at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)

at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)

at android.view.View.layout(View.java:15604)

at android.view.ViewGroup.layout(ViewGroup.java:4966)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)

at android.widget.FrameLayout.onLayout(FrameLayout.java:508)

代码是:

Fragment.java:

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

db = DataBindingUtil.inflate(inflater, R.layout.fragment_group_comments, container, false);

getSubComponent().inject(this);

db.setVariable(BR.height, 0);

// Inflate the layout for this fragment

return db.getRoot();

}

@BindingAdapter("android:layout_height")

public static void setLayoutHeight(View view, float commentNumber) {

Timber.e("setLayoutHeight " + commentNumber);

try {

GridLayoutManager.LayoutParams layoutParams =

(GridLayoutManager.LayoutParams) view.getLayoutParams();

if (10 <= commentNumber && commentNumber < 10) {

layoutParams.height = 400;

} else if (11 <= commentNumber && commentNumber < 20) {

layoutParams.height = 500;

}

view.setLayoutParams(layoutParams);

} catch (Exception ignore) {}

}

item_.xml

name="height"

type="Integer" />

android:id="@+id/view_item"

style="@style/RelativeLayout_WrapContent"

android:layout_height="@{height, default=wrap_content}">

style="@style/ImageView_WrapContent"

android:src="@mipmap/red_circle" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值