我需要在每个网格项内的3个文本视图中显示数据,但我还希望每个网格项都是正方形。此外,cursoradapter全部基于搜索。
基于我的必需品,我通过研究发现,我应该为每个网格项创建自己的视图组,并将高度设置为与宽度相同(在onMeasurement中),这会生成正确的方块。但是现在我的cursoradapter数据不会显示在视图中。
我可以告诉我正在引用cursoradapter,因为gridview中的白框数量会根据我搜索的内容而改变。
我哪里错了?
<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);
}
}
我的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")));
}
}
答案 0 :(得分:0)
我发现在将我的延伸更改为LinearLayout并写入super.onLayout(已更改,l,t,r,b)之后;它现在在我想要的广场上显示我的布局。