android ListActivity 不适用于自定义适配器

标签 android listview adapter listactivity baseadapter

我在使用带有自定义适配器的 ListActivity 时遇到了问题。这是适配器代码:

public class CustomRowAdapter extends BaseAdapter
{
    private Context mContext;

    public CustomRowAdapter ( Context context )
    {
        mContext = context;
    }

    @Override
    public int getCount()
    {
        return 6;
    }

    @Override
    public Object getItem( int position )
    {
        return null;
    }

    @Override
    public long getItemId( int position )
    {
        return position;
    }

    @Override
    public View getView( int position, View convertView, ViewGroup parent )
    {
        LinearLayout rowLayout;

        if( convertView == null )
        {
            rowLayout = ( LinearLayout )LayoutInflater.from( mContext ).inflate( R.layout.list_item_layout, parent, false );
        }
        else
        {
            rowLayout = ( LinearLayout )convertView;
        }

        return rowLayout;
    }
}

这是 Activity :

public class MyListActivity extends ListActivity
{
    @Override
    public void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );

        setContentView( R.layout.list_layout );
    }

    @Override
    public void onResume()
    {
        super.onResume();

        CustomRowAdapter rowAdapter = new CustomRowAdapter( this );
        setListAdapter( rowAdapter );
    }
}

list_item_layout 只是一个带有单个 TextView 的 LinearLayout,所以我希望在我的列表中看到 6 个相同的项目,但列表是空的。我已经逐步执行了 CustomRowAdapter.getView() 并且正在使用位置 0 到 5 调用它。我一定是遗漏了一些简单的东西。为什么列表显示为空?

编辑:ListView 在 hierarchyviewer 中有子项,因此看起来我的布局中某处可能有问题。这是包含 ListView 的布局:

<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <TableLayout android:id="@+id/TableLayout01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:stretchColumns="*" android:orientation="horizontal">
        <TableRow android:layout_height="wrap_content" android:id="@+id/TableRow01" android:layout_width="fill_parent">
            <Button android:layout_width="wrap_content" android:layout_gravity="left|center_vertical" android:minWidth="65dp" android:layout_height="wrap_content" android:id="@+id/back_button" android:text="@string/back"></Button>
            <TextView android:textColor="#FFFFFF" android:textStyle="bold" android:layout_gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textSize="16sp" android:text="@string/general_information"></TextView>
            <Button android:layout_width="wrap_content" android:layout_gravity="right|center_vertical" android:minWidth="65dp" android:layout_height="wrap_content" android:id="@+id/next_button" android:text="@string/next"></Button>
        </TableRow>
    </TableLayout>
    <ListView android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@android:id/list"></ListView>
</LinearLayout>

这是列表项的布局:

<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:id="@+id/textView1" android:layout_height="wrap_content" android:text="TextView" android:layout_width="wrap_content" android:textColor="#FFFFFF"></TextView>
</LinearLayout>

最佳答案

android:orientation="vertical" 添加到您的顶部 id/linearLayout1(不是行)。

在您的行中,您可能还想添加 android:minHeight="?android:attr/listPreferredItemHeight"。这将使您的行不会变得太短。

关于android ListActivity 不适用于自定义适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378289/

相关文章:

java - 从另一个类访问时,Getter 函数不返回值

android - Gradle 不包括已发布的 pom.xml 中的依赖项

java - 创建菜单资源会抛出 IllegalStateException

android - 在 Android 的图库 View 中添加 RelativeLayout 或 ListView?

ios - 我怎样才能得到像下面的 Apple Music 播放列表概述这样的 ListView ?

android - ListView 和可变高度项目导致滚动问题

java - Android - 如何使用适配器类中的代码在布局文件中设置图像?

kotlin - 我可以在 Kotlin 中使用接口(interface)类型作为构造函数参数吗

android - 我在哪里可以看到路径 getApplicationContext().getFilesDir() 中的文件

android - 无法从 URL 加载图像