【问题标题】:add a header to fragmentlist android向fragmentlist android添加标题
【发布时间】:2012-10-26 10:18:00
【问题描述】:

我正在向我的 ListFragment 添加一个标题,但标题没有出现。我尝试添加 onCreate 和 onStart 但我已经设置了我的适配器。我在这里找到了这个Best place to addHeaderView in ListFragment,但它无效。

@Override

     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                View v = getActivity().getLayoutInflater().inflate(R.layout.header,
                        null);
                container.addView(v,0);
                rla = new RowListAdapter(getActivity().getLayoutInflater(),
                        R.layout.itemlayout, rl);
                setListAdapter(rla);
                return super.onCreateView(inflater, container, savedInstanceState);
            }

    @Override
    public void onStart() {
        super.onStart();
        getListView().setBackgroundResource(R.color.tostadoclaro);
        getListView()
                .setDivider(getResources().getDrawable(R.drawable.divider));

        getListView().setDividerHeight(4);
    }

¡¡¡解决方法!!!

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    View v = getActivity().getLayoutInflater().inflate(R.layout.header,
            null);
    this.getListView().addHeaderView(v);
    rla = new RowListAdapter(getActivity().getLayoutInflater(),
            R.layout.itemlayout, rl);
    setListAdapter(rla);
    super.onActivityCreated(savedInstanceState);
}
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){// Empty. Use original.}

【问题讨论】:

    标签: android header android-listfragment


    【解决方案1】:

    不要将视图添加到容器中。使用 addHeaderView(v)。

    【讨论】:

    • 我明白了!!!我尝试了 tieh addHeaderView(v) 但在 onCreateView 中不起作用。我这样做了:@Override public void onActivityCreated(Bundle savedInstanceState) { View v = getActivity().getLayoutInflater().inflate(R.layout.header, null); this.getListView().addHeaderView(v); rla = new RowListAdapter(getActivity().getLayoutInflater(), R.layout.itemlayout, rl); setListAdapter(rla); super.onActivityCreated(savedInstanceState); }
    • 很高兴听到!我可能也应该提到这一点.. :)
    【解决方案2】:

    完整代码(改编自here):

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        TextView tv = new TextView(getActivity());
        tv.setText("Hello");
        getListView().addHeaderView(tv);
        setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,
                new String[] { "Hello world" }));
    }
    
    @Override
    public void onDestroyView() {
        setListAdapter(null);
        super.onDestroyView();
    }
    

    另见:Best place to addHeaderView in ListFragment

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多