0

各グリッド項目内の 3 つのテキストビューにデータを表示する必要がありますが、各グリッド項目を正方形にしたいです。また、cursoradapter はすべて検索に基づいています。

必要に応じて、グリッド項目ごとに独自のビューグループを作成し、高さを (onMeasurement で) 幅と同じに設定する必要があることを調査で発見しました。これにより、適切な正方形が生成されます。しかし、cursoradapter からのデータがビューに表示されなくなりました。

グリッドビュー内の白いボックスの数は、検索内容によって変化するため、cursoradapter が参照されていることがわかります。

どこが間違っていますか?

<ubiquia.sqbxsync.main.GridViewGroup
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffffff">

<RelativeLayout
    android:id="@+id/gridLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="TextView"
        android:textSize="15dp"
        android:textColor="#ff000000" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="10dp"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="TextView"
        android:textSize="11dp"
        android:textColor="#ff000000" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_marginLeft="10dp"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="TextView"
        android:textSize="11dp"
        android:textColor="#ff000000" />

</RelativeLayout>

package ubiquia.sqbxsync.main;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;

public class GridViewGroup extends ViewGroup {

    public GridViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
     // Do nothing   
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
    }  
}

My CursorAdapter

public class GridCursorAdapter extends CursorAdapter {

    public GridCursorAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View gridView = inflater.inflate(R.layout.grid_item, null, true);
        return gridView;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView tv1 = (TextView) view.findViewById(R.id.textView1);
        TextView tv2 = (TextView) view.findViewById(R.id.textView2);
        TextView tv3 = (TextView) view.findViewById(R.id.textView3);
        tv1.setText(cursor.getString(cursor.getColumnIndexOrThrow("trackingnumber")));
        tv2.setText(cursor.getString(cursor.getColumnIndexOrThrow("recipient_name")));
        tv3.setText(cursor.getString(cursor.getColumnIndexOrThrow("carrier_name")));
    }
}
4

1 に答える 1

0

extends を LinearLayout に変更し、super.onLayout(changed,l,t,r,b); に書き込んだ後、必要な正方形のレイアウトが表示されるようになりました。

于 2013-05-03T18:06:39.363 に答える