如何在 Android 中使用 setContentView()

How to use setContentView() in Android

我有一个带页脚的列表视图 activity。

我想做的是:

  1. 创建列表视图。
  2. 将文本视图添加到列表视图的页脚
  3. 将页脚应用于列表视图。

下面是activity的onCreate方法

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lecture_refer_room);

    // making listview...
    ListView listView = (ListView) findViewById(R.id.referList);
    ...
    ...
    String[] from = {"line1", "line2"};
    int[] to = {android.R.id.text1, android.R.id.text2};
    SimpleAdapter adapter = new SimpleAdapter(this, mapList,
              android.R.layout.simple_list_item_2, from, to);

           // footer_layout is in refer_footer.xml
     View footer = getLayoutInflater().inflate(R.layout.refer_footer, null, false);
    LinearLayout ll = (LinearLayout)findViewById(R.id.footer_layout);

    TextView tv= new TextView(this);
    tv.setText(element.text());
    tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
    tv.setVisibility(View.VISIBLE);
    ll.addView(tv);


        listView.addFooterView(footer);

        listView.setAdapter(adapter);
        //setContentView(R.layout.activity_lecture_refer_room);
    }
}

有两个 .xml 文件。(一个用于包含列表视图的 activity,一个用于页脚) 要添加 textview,我使用 setContentView(R.layout.refer_footer); 并且成功添加了 textview。但是当我 运行 一个应用程序时,它只显示页脚的内容。(不是列表视图)所以我使用 setContentView(R.layout.activvity_lecture_refer_room); 然后应用程序什么都不显示。

我应该怎么做才能显示包含页脚的 lsitview?

这里:

setContentView(R.layout.refer_footer);

无需使用 refer_footer 布局调用 setContentView,因为 refer_footer 布局适用于您使用 addFooterView 添加的 ListView 页脚:

// inflate foooter layout 
 View footer = getLayoutInflater().inflate(R.layout.refer_footer,
                                                             null, false);
  // get footer_layout from footer
  LinearLayout ll = (LinearLayout)footer.findViewById(R.id.footer_layout);
    // create TextView
    TextView tv= new TextView(this);
    tv.setText(element.text());
    tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
    tv.setVisibility(View.VISIBLE);
    // add textview to footer_layout
    ll.addView(textview);
    // set layout for footer
    listView.addFooterView(footer);