Android文档列表视图XML示例源代码

时间:2012-02-02 02:40:23

标签: java android layout

如果您查看有关如何implement a List View and populate it的Android文档,您会发现他们只会教你如何在Java中扩展ListActivity而不是普通Activity,但是如何使用XML布局文件并扩展Activity

将使用相同的代码(布局和填充列表)

我之所以这样问,是因为我希望实现RelativeLayout并在屏幕上添加更多元素ListView比使用.inflate()addHeaderView()更灵活/ addFooterView()

2 个答案:

答案 0 :(得分:7)

我认为您正在寻找的方式是创建并填充您自己的列表。

  • 创建一个主布局(mainLayout.xml)//它应该至少有一个线性布局。
  • 为列表行创建模板布局。
  • 在您的活动中,将模板在for循环中膨胀,填充它并将其附加到主布局。

这是一个例子,

<强> listtemplate.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:id="@+id/listLayout"
    android:clickable="true"
    >
            <TextView android:layout_width="wrap_content" 
                      android:textAppearance="?android:attr/textAppearanceLarge" 
                      android:layout_marginLeft="3dp"
                      android:layout_height="wrap_content" 
                      android:layout_alignParentLeft="true"
                      android:layout_alignParentTop ="true"
                      android:id="@+id/mainText" 
                      android:text="TextView">
                </TextView>
</RelativeLayout>

并在您的活动中

public void CreateAndAppendListLayout() 
{
   List<String> mainList; //populate it...
   LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
   LayoutInflater li =  (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   for (int i = 0; i < mainList.size();  i++){
       View tempView = li.inflate(R.layout.listtemplate, null);
       TextView textMain = (TextView) tempView.findViewById(R.id.mainText);

       textMain.setText(mainList.get(i)); 
       mainLayout.addView(tempView);
      } 
}

答案 1 :(得分:1)

您可以从Activity扩展而不会出现任何问题。从ListActivity扩展只是帮助您完成大部分(非常简单)的工作。您可以see the source code了解它的作用。它归结为调用findViewById()并设置适配器。处理ListViews最困难的部分是Adapters,而不是ListViews本身。