作者:HoerenRegen | 来源:互联网 | 2023-09-24 11:12
如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity集成ListActivity来实现,ListActivity的子类无须调用setContentView方法来显示某个
如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity集成ListActivity来实现,ListActivity的子类无须调用setContentView方法来显示某个界面,而是可以直接传入一个内容Adapter,ListActivity的子类就呈现出一个列表。
例如,将使用示例2的例子修改一下,如下:
package com.toby.personal.testlistview;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] array1 = {"C", "C++", "Qt", "QML"};
ArrayAdapter arrayAdapter1 = new ArrayAdapter<>(this, R.layout.array_lang, array1);
setListAdapter(arrayAdapter1);
}
}
上面程序的Activity继承了ListActivity,ListActivity无须界面布局文件。运行效果如下:
20170227215236
我们还可以在onCreate方法中使用setContentView方法设置自定义布局。但是这时需要在布局文件中指定一个id为“@+id/android:list”(如果是代码形式,则是android.R.id.list)的ListView。例如,我们自定义名为my_list_view的ListView如下:
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@color/colorPrimaryDark"
android:layout_weight="1"
android:drawSelectorOnTop="false"
/>
然后在onCreate方法中使用setContentView方法,设置my_list_view的自定义布局文件:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_list_view);
String[] array1 = {"C", "C++", "Qt", "QML"};
ArrayAdapter arrayAdapter1 = new ArrayAdapter<>(this, R.layout.array_lang, array1);
setListAdapter(arrayAdapter1);
}
上述自定义的ListView的运行效果如果:
20170227215601
参考文献:《疯狂Android讲义(第2版)》