Best place to addHeaderView in ListFragment

前端 未结 7 1526
梦谈多话
梦谈多话 2020-12-05 02:37

I\'m having some trouble setting up my custom header in my list.

I\'m creating a ListFragment with a custom adapter. I have the list working fine, but I\'m trying t

7条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-05 02:51

    This is my solution for handling footer/header in list view. I use it in retained fragment. Adapter is initialized in renderView() method. This method can be called how many times you need (e.g. for refresh data in view) and footer/header works fine. I tested this code on Android 2,3,4.

    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);
    
        ...
    
        renderView();
    }
    
    
    @Override
    public void onDestroyView()
    {
        super.onDestroyView();
    
        // free adapter
        setListAdapter(null);
    }
    
    
    private void renderView()
    {
        // reference
        ListView listView = getListView();
    
        // adapter
        if(getListAdapter()==null)
        {
            // init adapter
            mAdapter = new MyAdapter(...);
        }
        else
        {
            // refill adapter
            // this method assign array list object to adapter and call notifyDataSetChanged()
            mAdapter.refill(...);
        }
    
        // add footer
        setListAdapter(null);
        if(listView.getFooterViewsCount()==0)
        {
            mFooterView = getActivity().getLayoutInflater().inflate(R.layout.my_footer, null);
            listView.addFooterView(mFooterView);
        }
    
        // set adapter
        setListAdapter(mAdapter);
    }
    

提交回复
热议问题