如何在不扩展列表 Activity 的情况下创建自定义列表视图?

How to Create a Custom Listview without extending List Activity?

我想创建一个包含图像和文本的自定义布局的列表视图

但是我找到的所有教程都扩展了 List Activity 但我无法扩展 List Activity 因为我需要向布局添加按钮和其他内容。 我需要使用自定义项目布局的 ListView

有什么想法吗?

您不一定要使用 ListActivity 才能在您的布局中拥有 ListView。所有使用 ListActivity 的样本都在那里,因为人们很懒惰 ;)

因此只需使用常规 Activity,然后只需将 ListView 添加到您设置为内容视图的布局中即可。这可能看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0"
        android:layout_weight="1" />
    <Button
        android:id="@+id/somethingButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Do something" />
    <Button
        android:id="@+id/elseButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Do something else" />
</LinearLayout>

然后在您的 OnCreate 方法中像任何其他 Activity 一样:

SetContentView(Resource.Layout.myLayout); // myLayout.axml

var listView = FindViewById<ListView>(Resource.Id.listView);
listView.Adapter = new MyAdapter(context, itemsSource);

var somethingButton = FindViewById<Button>(Resource.Id.somethingButton);
var elseButton = FindViewById<Button>(Resource.Id.elseButton);

... more code ...

ListView 和其他布局一样只是一个布局,所以它没有什么神奇之处。 MyAdapter 在这个示例中当然是您实现的东西,它获取您的数据并以所需的图像和文本布局呈现它。

有关 ListViewAdapter 的更多信息,请 refer to the excellent documentation which Xamarin provides