2012-07-11 61 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