3

ここから2種類の行を持つリストビューを実装しました複数行のリストビューのチュートリアル

すべてが正常に機能しており、

私が今抱えている問題は、行の高さを設定することです.

背景は色のままでいいので、

しかし、背景に画像を使用すると、背の高い行しか取得できません[他の単純なリストビューでは、高さはプログラムで設定された高さを尊重します]が、この場合、行が変更されます

それで

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/category_item_row"
  android:orientation="horizontal" 
  android:layout_width="fill_parent"
  android:background="#ff00ff"
  android:layout_height="70dp"
  android:padding="3dp"
 >

<ImageView
 android:id="@+id/image"
 android:layout_width="40dp"
 android:layout_height="70dp"
 android:gravity="center_vertical"/>

<TextView
 android:id="@+id/title"
 android:textSize="20sp"
 android:layout_width="90dp"
 android:layout_height="70dp"
 android:gravity="center_vertical"/>
</LinearLayout>

正常に動作します、

しかし

android:background="@drawable/phone_cat_cell">

割り当てられた高さを尊重していない、

画像の背景を使用してこの高さを修正するには?

ありがとう!

編集 1、アダプター

listViewItem.setAdapter(new PhoneItemAdapter(new ItemPhoneDataSource().getItems()));

private class PhoneItemAdapter extends BaseAdapter {  
    final List<RowPhone> rows;//row

    //data source, style
    PhoneItemAdapter(List<ItemPhone> animals) {
        rows = new ArrayList<RowPhone>();//member variable

        //choose cell! iterator
        for (ItemPhone item : animals) {
            //if it has an image, use an ImageRow
            if (item.getImageId() != null) {
                rows.add(new RowFolderPhone(LayoutInflater.from(getActivity()), item)); //imageRow!
            } else {//otherwise use a DescriptionRow

                rows.add(new RowItemPhone(LayoutInflater.from(getActivity()), item));                   
            }
        }
    }

    //delegate
    @Override
    public int getViewTypeCount() {
        return RowTypePhone.values().length;
    }

    @Override
    public int getItemViewType(int position) {
        //con cast
        return ((RowPhone) rows.get(position)).getViewType();

    }

    public int getCount() {
        return rows.size();
    }

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {

        //cambiado con cast!
        return ((RowPhone) rows.get(position)).getView(convertView);
    }
   }
4

3 に答える 3

3

アダプタ コードを確認してください。ビューの拡張中に null を渡している場合は、そのコードをこれに置き換えてください。

view = inflater.inflate(R.layout.listview_row, parent, false);
于 2013-09-19T05:49:56.493 に答える
2

これを試して:

<ImageView
android:id="@+id/image"
android:layout_width="40dp"
android:layout_height="70dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:gravity="center_vertical"/>
于 2013-09-19T05:54:58.900 に答える