2

我正在使用可以扩展以显示 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() 的位置,这表明它仅在第一行被调用。

如果您想查看任何其他代码,请告诉我,谢谢。

4

0 回答 0