0

グリッドビューを使用して、2 つのテキスト フィールドで構成されるさまざまな記事アイテムを表示しています。テキストの量が異なるため、各アイテムの高さが異なり、行のサイズは行の最大のアイテムの高さに合わせてください。gridview は、colnum = autofit を使用します。

スクロールの前後の次のスクリーンショットが示すように、上下にスクロールするため、動作は期待どおりです。私は何が欠けていますか?

スクロールのグリッドビュー:

適切にスクロールする前のグリッドビューのスクリーンショット

上下にスクロールしたのGridView :

めちゃくちゃなアイテムでスクロールした後のグリッドビューのスクリーンショット

さらなるコード:

アイテムのxmlコード

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="14dp"
    android:textColor="#040404"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="serif" />

<TextView
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:textColor="#343434"
    android:textSize="14sp"
    android:typeface="serif" />

</LinearLayout>

My ListAdapter (可能であればビューをリサイクル):

public class SearchResultListViewAdapter extends ArrayAdapter {

Context                    context;
Newspaper                  newspaper;
List<SearchResultListItem> searchResults;
int                        viewStyle;

public SearchResultListViewAdapter(Context context, int resourceId, List<SearchResultListItem> searchResults, int viewStyle) {
    super(context, resourceId, searchResults);
    this.context = context;
    this.searchResults = searchResults;
    this.viewStyle = viewStyle;
}

/* private view holder class */
private class ViewHolder
{
    TextView txtTitle;
    TextView txtText;
}

public View getView(int position, View convertView, ViewGroup parent)
{
    View gridItem;
    ViewHolder holder = null;

    if (convertView == null)
    {
        LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
        if (this.viewStyle == 0)
        {
            gridItem = mInflater.inflate(R.layout.searchresult_list_item, null);
        } else
        {
            gridItem = mInflater.inflate(R.layout.searchresult_grid_item, null);
        }
        holder = new ViewHolder();
    } else {
        gridItem = convertView;
        holder = (ViewHolder) gridItem.getTag();
    }

    holder.txtText = (TextView) gridItem.findViewById(R.id.text);
    holder.txtTitle = (TextView) gridItem.findViewById(R.id.title);
    gridItem.setTag(holder);
    SearchResultListItem rowItem = getItem(position);
    holder.txtText.setText(Html.fromHtml(rowItem.getText()), TextView.BufferType.SPANNABLE);
    holder.txtTitle.setText(Html.fromHtml(rowItem.getTitle()), TextView.BufferType.SPANNABLE);

    return gridItem;
}
}

最後に、グリッドビューを含む私のアクティビティ レイアウト:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent" >

<TableRow
    android:id="@+id/tableRow3"
    android:layout_width="wrap_content"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <EditText
            android:id="@+id/searchPatternInput"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@+id/loadSearchResults"
            android:imeOptions="actionSearch"
            android:inputType="text" />

        <ImageButton
            android:id="@+id/showExtendedSearch"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/ic_action_filter" />

        <ImageButton
            android:id="@+id/loadSearchResults"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/showExtendedSearch"
            android:src="@drawable/ic_action_search" />
    </RelativeLayout>
</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#ffffff" >

        <ImageSwitcher
            android:id="@+id/nothingLoaded"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@drawable/ic_nothing_loaded" >
        </ImageSwitcher>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true" >

            <GridView
                android:id="@+id/searchResultThumbnailsGridView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:columnWidth="160dp"
                android:divider="#b5b5b5"
                android:dividerHeight="1dp"
                android:gravity="center"
                android:horizontalSpacing="4dp"
                android:listSelector="@drawable/list_selector"
                android:numColumns="auto_fit"
                android:padding="10dp"
                android:layout_weight="1"
                android:stretchMode="columnWidth"
                android:verticalSpacing="4dp" />

        </LinearLayout>
    </RelativeLayout>
</TableRow>

</TableLayout>
4

2 に答える 2