我想实现一个接收ArrayList
Element2S
的网格适配器,其中Element2S是一个带有两个String的自定义对象(Element2S(String a,String b)
GridAdapter应使用Element2S
ArrayList
填充网格。
String
对象的第一个Element2S
应该是第一个列元素,第二个元素的第二个String
Element2S
我的GridAdapter是:
public class GridViewAdapterC2 extends BaseAdapter {
private ArrayList<Element2S> itemList;
private Activity activity;
public GridViewAdapterC2(Activity activity,
ArrayList<Element2S> itemList) {
super();
this.itemList = itemList;
this.activity = activity;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return itemList.size();
}
@Override
public Element2S getItem(int position) {
// TODO Auto-generated method stub
return itemList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder {
public TextView txtViewColumn1;
public TextView txtViewColumn2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder view;
LayoutInflater inflator = activity.getLayoutInflater();
if (convertView == null) {
view = new ViewHolder();
convertView = inflator.inflate(R.layout.grid_row_2c, null);
view.txtViewColumn1 = (TextView) convertView
.findViewById(R.id.col1);
view.txtViewColumn2 = (TextView) convertView
.findViewById(R.id.col2);
convertView.setTag(view);
} else {
view = (ViewHolder) convertView.getTag();
}
String textCoilumn1 = itemList.get(position).getA();
String textCoilumn2 = itemList.get(position).getB();
view.txtViewColumn1.setText(textCoilumn1);
view.txtViewColumn2.setText(textCoilumn2);
return convertView;
}
}
不幸的是,在主要版本中我尝试使用此适配器
gridAdapter = new GridViewAdapterC2(this, myItemArrayList);
mygrid= (GridView) findViewById(R.id.myGridView);
mygrid.setAdapter(gridAdapter);
结果是错误的。
我的gridRow布局是
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow android:layout_gravity="left">
<TextView
android:id="@+id/col1"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:gravity="left|start"
android:padding="5dp"
android:textColor="@color/light_sky"
android:textSize="12sp" />
<TextView
android:id="@+id/col2"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:gravity="left|start"
android:padding="5dp"
android:textColor="@color/green_2"
android:textSize="12sp" >
</TextView>
</TableRow>
</TableLayout>
主要活动中的myGridView布局是
<GridView
android:id="@+id/myGridView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:gravity="center_horizontal"
android:numColumns="2" >
</GridView>
我无法弄清楚出了什么问题。
如果我的Elements2S arraylist是
1st element2S: (1,23a)
2nd element2S: (2,15b)
3rd element2S: (3,22c)
网格显示
1 2
3
但正确的输出是
1 23a
2 15b
3 22c
答案 0 :(得分:0)
我认为在这种情况下ListView优于GridView。
我认为LinearLayout优于TableLayout。
您的输出错误,因为网格单元格的某些区域被其他区域覆盖。尝试调整单元格和网格的大小。