我想在GridView中顯示自己的自定義視圖。我試過這個代碼:GridView中的自定義視圖
GridView gv= (GridView) rootView.findViewById(R.id.TerminGrid);
Cursor cr = db.rawQuery(DatenbankManager.GET_TERMINE, null);
ArrayAdapter<Termin> adapter = new ArrayAdapter<Termin>(getActivity(), android.R.layout.simple_list_item_1);
gv.setAdapter(adapter);
for(cr.moveToFirst(); !cr.isAfterLast(); cr.moveToNext())
{
String titel = cr.getString(cr.getColumnIndex("Titel"));
String datumString = cr.getString(cr.getColumnIndex("Datum"));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
Date datum = null; try { datum = df.parse(datumString); } catch (ParseException e) { }
Termin t = new Termin(getActivity(), db, titel, datum);
adapter.add(t);
}
但是當我運行這段代碼時,GridView中只顯示了幾個字符串。我真的不得不爲此創建自己的GridViewAdapter嗎?我認爲這是一個正常的瀏覽,我可以用上面的代碼diplay這...這是我的課:
public class Termin extends LinearLayout implements OnClickListener
{
public static final int LAYOUT = R.layout.termin_item;
private Context context;
private SQLiteDatabase db;
private String titel;
private Date datum;
public Termin(Context c)
{
super(c);
this.context = c;
}
public Termin(Context c, SQLiteDatabase db, String titel, Date datum)
{
super(c);
this.context = c;
this.db = db;
LayoutInflater.from(c).inflate(R.layout.termin_item, this, true);
this.setTitel(titel);
this.setDatum(datum);
}
}
而對於項目的佈局:
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/PaddingBottom"
android:paddingLeft="@dimen/PaddingHorizontal"
android:paddingRight="@dimen/PaddingHorizontal"
android:paddingTop="@dimen/PaddingTop" >
<TextView
android:id="@+id/Titel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/MarginTop"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/Datum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/MarginTop"
android:text="" />
<TextView
android:id="@+id/Uhrzeit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="" />
</LinearLayout>
</LinearLayout>
</merge>
我只想顯示這些項目在我的GridView中。關鍵是我認爲這些物品已準備好顯示,但我不能撥打GridView.addView(...)
direclty。項目的佈局被加載到構造器中,並且所有的TextView等都被設置在get和set Methods中。如何在不創建自己的ListAdapter的情況下顯示這些項目 - 在我看來,ListAdapter是不必要的和內存浪費。