2012-07-11 2 views
2

내 응용 프로그램에서 gridview를 표시하고 싶습니다. 내 gridview는 데이터베이스의 테이블처럼 보일 것입니다 (얼마나 많은 열과 얼마나 많은 행이 있어야합니다.). 붕괴 된 형식이 아닌 database.But과 유사해야합니다. 좋아 보이네. 제발 도와주세요.안드로이드의 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

+0

무엇이 문제이고, 더 많은 정보를 게시하십시오. –

+0

당신은 단지 textviews의 5 열을 가지고 gridview을 원해 ?? – AkashG

답변

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에서 많은 텍스트 뷰를 정의 할 수 있습니다. 귀하의 경우에는 당신이 비행 중에 열의 수를 알 수 있다고 믿기 때문에 xml을 통해 동적으로 수행 할 수없는 일종의 TextView 배열이 필요합니다. 어댑터 클래스에 TextView 배열을 정의해야하며 데이터베이스에서 오는 데이터에 따라 초기화 할 수 있습니다. 내가 전달하고 싶었던 것이 있기를 바랍니다. 일단 당신이 시작하면, 그것을 설계하는 데 도움이 필요하면 알려주십시오. :)

+0

감사합니다 Abhilasha ... 그것은 XML 파일 자체에서 5 열까지 가능합니다. 왜냐하면 코드에서 수동으로 수행하고 있기 때문입니다.하지만 그 자체로 디자인에서 원하는 것은 ... 가능합니까? –

+0

자세한 내용은 편집을 참조하십시오. – Abhilasha

관련 문제