我正在使用可以展开以显示GridView的项目的ListView。 ListView和适配器工作正常,GridView在添加时可以很好地扩展,但我不能让它在网格中显示多行。无论我将列设置为什么长度,都只显示一个列,并且很清楚问题不在于视图太小(我尝试使其具有非常大的高度)。我在这里浏览了其他问题,但这似乎不是一个常见的问题。我做错了什么?
的xml:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scorecardGridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="25dp"
android:numColumns="18"
android:isScrollContainer="false"
android:verticalSpacing="5dp"
android:horizontalSpacing="5dp"
android:stretchMode="columnWidth"
android:gravity="center" />
GridAdapter getView()代码:
public View getView(int position, View convertView, ViewGroup parent) {
Log.d("position",String.valueOf(position));
TextView textView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
textView = new TextView(context);
textView.setLayoutParams(new GridView.LayoutParams(25, 25));
} else {
textView = (TextView) convertView;
}
if (position < 18)
textView.setText(String.valueOf(position+1));
else {
position -= 18;
textView.setTypeface(null, Typeface.BOLD);
if (scores[position] > 0) {
textView.setTextColor(context.getResources().getColor(
R.color.red));
textView.setText("+" + String.valueOf(scores[position]));
} else {
if (scores[position] < 0)
textView.setTextColor(context.getResources().getColor(
R.color.blue));
textView.setText(String.valueOf(scores[position]));
}
}
return textView;
}
我用它来显示两排18柱高尔夫记分卡。无论我做什么,只有第一行显示。如果我更改numColumns属性,则会显示新的列数,但始终只显示一行。你可以看到我试着记录调用getView()的位置,并且它显示它只被调用第一行。
如果您想查看任何其他代码,请告诉我们,谢谢。