0

空のフッター ( LinearLayout) を自分に追加ListViewし、このフッターを自分のビューで埋めようとしています:

private View footerButton;
private LinearLayout footer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rlist);

    footer=new LinearLayout(this);
    footer.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT));

    footerButton=((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_button, null, false);

    ListView list=(ListView) findViewById(R.id.list);
    list.addFooterView(footerButton,null,false);

    final UsersListAdapter adapter = new UsersListAdapter(this);
    list.setAdapter(adapter);

    //...

    new Thread() {
        @Override
        public void run() {

            //Loading...

            runOnUiThread(new Runnable() {
                public void run() {
                    adapter.notifyDataSetChanged();

                    footer.removeAllViews();
                    footer.addView(footerButton);
                }
            });
        }
    }.start();
}

しかし、「footer.addView(footerButton);」の行で例外が発生します。

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

なんで?ご存知のようremoveAllViews()に、ビューを追加する前に呼び出します。修正方法は?

4

1 に答える 1

1

これは、オブジェクトにfooterButtonを追加したためですListView

この行をチェックしてください..

list.addFooterView(footerButton,null,false);

したがって、現在、footerButton には親、つまりリストがあります。そのため、LinearLayoutフッターへの追加中にエラーが発生します。

リストを試してみてくださいremoveView()...

于 2013-06-13T11:27:41.633 に答える