如果您查看有关如何implement a List View and populate it的Android文档,您会发现他们只会教你如何在Java中扩展ListActivity
而不是普通Activity
,但是如何使用XML布局文件并扩展Activity
?
我之所以这样问,是因为我希望实现RelativeLayout
并在屏幕上添加更多元素ListView
比使用.inflate()
和addHeaderView()
更灵活/ addFooterView()
。
答案 0 :(得分:7)
我认为您正在寻找的方式是创建并填充您自己的列表。
这是一个例子,
<强> 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本身。