Android addfooterview导致异常

Android addfooterview导致异常,android,inflate,Android,Inflate,我用这个充气 linear = (LinearLayout) findViewById(R.id.layout_content); linear.setVisibility(View.VISIBLE); LayoutInflater liInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); linear.addView(liInflater.inflate(R.layo

我用这个充气

linear = (LinearLayout) findViewById(R.id.layout_content);
    linear.setVisibility(View.VISIBLE);
LayoutInflater liInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslist, null));
    linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslistfv, null));
这是我的列表视图

btnmore = (Button)findViewById(R.id.btn_more);
getListView().addFooterView(btnmore);
lv.setAdapter(adapter);
我想第二次充气,但失败了

但是我可以第一次充气

linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslist, null));
我为什么会出现这个错误的问题是什么

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

我想这不是因为你指出的那句台词

您是否在代码中的任何位置调用了getLayoutParams()

调用getLayoutParams()时,会向父layoutparams显示typecase

比如,如果ListView的父对象是LinearLayout

LinearLayout.LayoutParams params=(LinearLayout.LayoutParams) listView.getLayoutParams();
RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams) listView.getLayoutParams();
如果ListView的父对象是RelativeLayout

LinearLayout.LayoutParams params=(LinearLayout.LayoutParams) listView.getLayoutParams();
RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams) listView.getLayoutParams();
尝试更改此选项:

linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslist,
      null));
为此:

linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslist,
      linear));

我也遇到过类似的情况——在list_view.setAdapter()上出现了异常“java.lang.ClassCastException:android.widget.RelativeLayout$LayoutParams”

通过对页脚和列表项使用相同的布局,我成功地解决了这个问题。下面的代码演示了如何在页脚和项目中使用布局“listview_行”

这是“listview_row.xml”的内容:


页脚的初始化方式如下:

View v = View.inflate(pager.Activity, R.layout.listview_row,  null);
View footer = (View) v.findViewById(R.id.listview_line);

//footer doesn't use TextView, it uses Button only. So, we hide TextView.
footer.findViewById(R.id.hs_line_textview).setVisibility(View.GONE); 
footer.findViewById(R.id.hs_line_footer_action).setVisibility(View.VISIBLE)
...
list_view.addFooterView(footer);

MyAdapter<Item> adapter = new MyAdapter(context, getListItems());
list_view.setAdapter(adapter);
View v=视图.充气(pager.Activity,R.layout.listview\u行,空);
视图页脚=(视图)v.findViewById(R.id.listview\u行);
//页脚不使用文本视图,它只使用按钮。所以,我们隐藏文本视图。
footer.findViewById(R.id.hs\u line\u textview).setVisibility(View.GONE);
footer.findViewById(R.id.hs\u行\u页脚\u操作).setVisibility(View.VISIBLE)
...
列表视图。添加页脚视图(页脚);
MyAdapter=新的MyAdapter(上下文,getListItems());
列表\视图.设置适配器(适配器);
适配器:

public class MyAdapter<T> extends ArrayAdapter<T> {
private final ArrayList<T> _List;
private final LayoutInflater _Inflater;

public MyAdapter(Context context, ArrayList<T> srcList) {
    super(context, 0, srcList);
    _Inflater = LayoutInflater.from(context);
    _List = srcList;
}

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;

        if (convertView == null) {    
            convertView = _Inflater.inflate(R.layout.listview_row, null);
            holder = new ViewHolder();

        //item doesn't use Button, it uses TextView only   
        //Button is hidden by default (see xml)
            holder.TextView = (TextView) convertView.findViewById(R.id.hs_line_textview);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        //item initialization 
        .....
   }
公共类MyAdapter扩展了ArrayAdapter{
私人最终阵列列表;
私人最终充气机;
公共MyAdapter(上下文上下文,ArrayList srcList){
super(上下文,0,srcList);
_充气器=充气器。从(上下文);
_List=srcList;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
如果(convertView==null){
convertView=\u充气器.充气(R.layout.listview\u行,空);
holder=新的ViewHolder();
//项目不使用按钮,它仅使用TextView
//默认情况下,按钮是隐藏的(请参见xml)
holder.TextView=(TextView)convertView.findViewById(R.id.hs\u line\u TextView);
}否则{
holder=(ViewHolder)convertView.getTag();
}
//项目初始化
.....
}

这不是理想的解决方案-当然只是解决办法。

我从来没有调用过getlayoutparam(),你能用XML发布全部代码吗?很抱歉,我用这个
linear.addView(liInflater.inflate(R.layout.main_specificalCategory AllNewslist,linear))尝试了这个
linear.addView(liInflater.inflate)来回复(R.layout.main_specificularcategory allnewslistfv,null));
它返回此错误
,原因是:java.lang.IllegalStateException:指定的子级已经有父级。您必须首先对子级的父级调用removeView()。