我想在我的应用程序中显示一个 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;
}
}
我的部分屏幕看起来与您想要的相似。
这是我的 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
数组,并且您可以根据来自数据库的数据动态地进行初始化。
希望你明白我想传达的信息。如果您在设计时需要更多帮助,请在开始后告诉我。 :)
关于android - android中的Gridview布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431294/