1

カスタムアダプタでの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;
    }
}

アクティビティは次のとおりです。

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>
4

2 に答える 2

4

(行ではなく)最上位のid/linearLayout1に追加android:orientation="vertical"します。

あなたの行に、あなたも追加したいかもしれませんandroid:minHeight="?android:attr/listPreferredItemHeight"。これにより、行が短くなりすぎるのを防ぐことができます。

于 2011-06-16T22:03:24.513 に答える
0

getViewメソッドには何も設定していません。ここで効率的なアダプタを確認してくださいリンクです

于 2011-06-16T20:39:53.380 に答える