Android GridView自定义适配器只显示一行

时间:2013-08-03 17:09:05

标签: android listadapter

我正在使用可以展开以显示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()的位置,并且它显示它只被调用第一行。

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

0 个答案:

没有答案
相关问题