将HeaderView添加到List时的java.lang.ClassCastException

时间:2015-06-16 05:03:56

标签: android android-listview header classcastexception android-framelayout

我在行UIWindow -

上向listview添加标题时遇到异常
channellist.addHeaderView(header);

我试过了两个 -

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

View header = View.inflate(getActivity(), R.layout.headerchannel, null);

但我得到了同样的例外。 我的HomeActivity确实有一个framelayout,这是我的项目所必需的。

3 个答案:

答案 0 :(得分:1)

如果你看到:

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
你必须这样做:

header.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

channellist.addHeaderView(header);

答案 1 :(得分:0)

你应该使用

View header = inflater.inflate(R.layout.headerchannel, null);

答案 2 :(得分:0)

我认为在你的标题中你的根元素是RelativeLayout。哪个是ViewGroup而不是查看。所以用ViewGroup充气它。

这就是它给你ClassCastException的原因。您正在尝试将ViewGroup转换为视图。

首先检查您的布局是ViewGroup还是View。 如果它的视图组你必须这样做..

ViewGroup header = LayoutInflater.from(getActivity()).inflate(R.layout.headerchannel, null);

或者它只是一个观点..

View header = LayoutInflater.from(getActivity()).inflate(R.layout.headerchannel, null);