2012-07-11 77 views
2

我想在我的應用程序中顯示一個gridview。我的gridview應該看起來像一個數據庫中的表格(多少列和多少行)。應該像數據庫一樣。但我有一些摺疊的格式不是看起來不錯。請幫助我。在android中的GridView佈局

我的main.xml:

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="5" 
    android:stretchMode="columnWidth" 
    android:layout_below="@+id/text1view" 
    android:gravity="center" 
    android:horizontalSpacing="10dip" /> 

我的佈局文件是:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingTop="4dip" 
    android:paddingBottom="6dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal">   

    <TextView android:id="@+id/text1"  
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView android:id="@+id/text3"   
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView android:id="@+id/text5"   
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView android:id="@+id/text7"   
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView android:id="@+id/text9"   
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/textView21" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" /> 

</LinearLayout> 
+0

請詳細說明您的問題 – sunil 2012-07-11 11:10:45

+0

是什麼問題,發佈更多信息。 – 2012-07-11 11:12:37

+0

你想gridview有5列僅textview?這裏 – AkashG 2012-07-11 11:12:41

回答

1

我有類似的那種屏幕的話,你可以使用下面的一些代碼。我的屏幕

public class ListViewCustomAdapter extends BaseAdapter { 

    /** 
    * Array list to hold assets which need to be displayed 
    */ 
    ArrayList<Asset> itemList; 

    /** 
    * Context: Interface to global information about an application 
    * environment. 
    */ 
    public Activity context; 

    /** 
    * Layout inflater to inflate view of each row of the list from the layout 
    * xml 
    */ 
    public LayoutInflater inflater; 

    /** 
    * @param context 
    *   : Context: Interface to global information about an 
    *   application environment. 
    * @param itemList 
    *   : arraylist to hold asset which need to be displayed in list 
    */ 
    public ListViewCustomAdapter(Activity context, ArrayList<Asset> itemList) { 
     super(); 

     this.context = context; 
     this.itemList = itemList; 

     this.inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    // @Override 
    /* 
    * (non-Javadoc) 
    * 
    * @see android.widget.Adapter#getCount() 
    */ 
    public int getCount() { 
     if (itemList != null) { 
      return itemList.size(); 
     }else return 0; 
    } 

    // @Override 
    /* 
    * (non-Javadoc) 
    * 
    * @see android.widget.Adapter#getItem(int) 
    */ 
    public Object getItem(int position) { 
     if(itemList != null){ 
      return itemList.get(position); 
     }else{ 
      return 0; 
     } 

    } 

    // @Override 
    /* 
    * (non-Javadoc) 
    * 
    * @see android.widget.Adapter#getItemId(int) 
    */ 
    public long getItemId(int position) { 
     return 0; 
    } 

    /** 
    * @author asadafale class to create view of each row in the list 
    */ 
    public static class ViewHolder { 

     /** 
     * displays name of asset 
     */ 
     TextView txtVw_name; 
     /** 
     * displays serial no of asset 
     */ 
     TextView txtVw_sno; 
     /** 
     * displays type of asset 
     */ 
     TextView txtVw_type; 

    } 

    // @Override 
    /* 
    * (non-Javadoc) 
    * 
    * @see android.widget.Adapter#getView(int, android.view.View, 
    * android.view.ViewGroup) 
    */ 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.listview_row, null); 

      holder.txtVw_name = (TextView) convertView 
        .findViewById(R.id.tv_name); 
      holder.txtVw_sno = (TextView) convertView.findViewById(R.id.tv_sno); 
      holder.txtVw_type = (TextView) convertView 
        .findViewById(R.id.tv_type); 

      convertView.setTag(holder); 
     } else 
      holder = (ViewHolder) convertView.getTag(); 

     // set selected item 
     LinearLayout activeItem = (LinearLayout) convertView; 

     if (position == SearchAssetActivity.selectedItem) { 
      activeItem.setBackgroundColor(Color.GRAY); 

      // for focus on it 
      int top = (activeItem == null) ? 0 : activeItem.getTop(); 
      ((ListView) parent).setSelectionFromTop(position, top); 
     } else { 
      activeItem.setBackgroundColor(Color.BLACK); 
     } 

     Asset bean = (Asset) itemList.get(position); 

     holder.txtVw_name.setText(bean.getAssetName()); 
     holder.txtVw_sno.setText(bean.getSno()); 
     holder.txtVw_type.setText(bean.getAssetType()); 

     return convertView; 
    } 

} 

enter image description here

部分看起來像你想要的東西類似。

這裏是我的佈局XML:

<LinearLayout   
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/grey05" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/tv_name" 
     android:layout_width="1dip" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:layout_weight="0.25" 
     android:text="Name" 
     android:textAppearance="?android:attr/textAppearanceMedium" > 
    </TextView> 

    <TextView 
     android:id="@+id/tv_sno" 
     android:layout_width="1dip" 
     android:layout_height="wrap_content" 

     android:layout_weight="0.25" 
     android:text="Serial No." 
     android:textAppearance="?android:attr/textAppearanceMedium" > 
    </TextView> 

    <TextView 
     android:id="@+id/tv_type" 
     android:layout_width="1dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.25" 
     android:layout_marginLeft="20dp" 
     android:text="Type" 
     android:textAppearance="?android:attr/textAppearanceMedium" > 
    </TextView> 
</LinearLayout> 

我知道,我想只顯示3列。您可以在layout.xml中定義多個textview。在你的情況下,我相信你會知道動態列的數量,所以你將需要某種數組TextView s動態地做到這一點,不能通過XML來完成。您必須在您的適配器類中定義一個TextView的數組,並且可以根據來自數據庫的數據進行初始化。 希望你有我想傳達的。一旦你開始,請讓我知道你是否需要更多的幫助。 :)

+0

感謝Abhilasha ..是否有可能在XML文件本身5列。因爲你在代碼手動做。但我想在設計本身...是否有可能? – 2012-07-11 11:53:08

+0

看我的編輯更多的指針。 – Abhilasha 2012-07-11 12:10:15