android - android中的Gridview布局

标签 android layout gridview

我想在我的应用程序中显示一个 gridview。我的 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>

最佳答案

我有类似的屏幕,所以你可以使用下面的一些代码。

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。在你的情况下,我相信你会知道动态的列数,所以你需要某种 TextViews 的数组来动态地完成它,这不能通过 xml 完成。您将必须在您的适配器类中定义一个 TextView 数组,并且您可以根据来自数据库的数据动态地进行初始化。 希望你明白我想传达的信息。如果您在设计时需要更多帮助,请在开始后告诉我。 :)

关于android - android中的Gridview布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431294/

相关文章:

asp.net - 如何将 ItemTemplate 文本值设置为组合框 DataTextField 而不是 DataValueField

c# - GridView 列大小不更改 ASP.NET

android - 拥有外部调用的 secret URL 的替代方案

.net - WPF 应用程序布局

java - 在相对布局中居中 GridView

java - ListView 上的 Android 布局充气机不工作

JavaFX:滚动 Pane 不适合父级

android - Android 4.3 中的 vold.fstab 文件

java - 如何跳过唯一的用户 ID 并访问回收者 View 的子值

android - 通过 adb 获取 sdcard 目录