【问题标题】:How to use setContentView() in Android如何在 Android 中使用 setContentView()
【发布时间】:2015-02-04 11:58:30
【问题描述】:

我在活动中有一个带有页脚的列表视图。

我想做的是:

  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 文件。(一个用于包含列表视图的活动,一个用于页脚) 要添加 textview,我使用 setContentView(R.layout.refer_footer); 并成功添加了 textview。但是当我运行一个应用程序时,它只显示页脚的内容。(不是列表视图)所以我使用setContentView(R.layout.activvity_lecture_refer_room); 然后应用程序什么也不显示。

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

【问题讨论】:

标签: android android-layout setcontentview


【解决方案1】:

这里:

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);

【讨论】:

  • 它出现在NullPointerException ll.addView(tv)
  • @user3858358:显示更新的代码并确保您使用LinearLayout ll = (LinearLayout)footer.findViewById(R.id.footer_layout);
  • @user3858358: xml footer_layout id 存在于哪个布局中?在refer_footer.xmlactivity_lecture_refer_room 中?
  • 我做的和你回答的完全一样——footer_layout 存在于refer_footer.xml
  • View footer = getLayoutInflater().inflate(R.layout.refer_footer, null, false); LinearLayout ll = (LinearLayout)findViewById(R.id.footer_layout); TextView textview = new TextView(this); ll.addView(textview); listView.addFooterView(footer); listView.setAdapter(adapter);
猜你喜欢
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多