Android:在网格中显示文本的简单 GridView

Posted

技术标签:

【中文标题】Android:在网格中显示文本的简单 GridView【英文标题】:Android: Simple GridView that displays text in the grids 【发布时间】:2010-11-02 05:09:36 【问题描述】:

我正在关注有关 GridView 的 android 教程中的示例,但我不想显示图像,而是想使用 TextView 简单地显示一些文本。事实证明似乎比我想象的要难。看起来这似乎完全没有必要,而且它没有有效的用例,但我正在尝试这个只是为了让自己熟悉 sdk。

所以我的代码与http://developer.android.com/guide/tutorials/views/hello-gridview.html 中的 GridView 示例几乎相同,但我没有使用 ImageAdapter,而是创建了一个虚拟适配器,如下所示:

public class MyAdapter extends BaseAdapter 

    private Context context;
    private String[] texts = "aaa", "bbb", "ccc", "ddd", "eee", "fff", "eee", "hhh", "iii";

    public MyAdapter(Context context) 
        this.context = context;
    

    public int getCount() 
        return 9;
    

    public Object getItem(int position) 
        return null;
    

    public long getItemId(int position) 
        return 0;
    

    public View getView(int position, View convertView, ViewGroup parent) 
        TextView tv;
        if (convertView == null) 
            tv = new TextView(context);
            tv.setLayoutParams(new GridView.LayoutParams(85, 85));
        
        else 
            tv = (TextView) convertView;
        

            tv.setText(texts[position]);
        return tv;
    

这一切对我来说似乎都是有效的,但运行它不会在屏幕上显示任何内容。并且没有错误消息。如果我点击它们,会有一些可选择/可点击(不可见)的块,但文本显然没有显示。我想知道我的布局没有导致这个问题的 android:text 吗?还是别的什么?

我们将不胜感激,感谢您的帮助!

【问题讨论】:

【参考方案1】:

我不确定是什么导致了您的问题。我按照您链接到的页面上的分步说明设置“Hello,GridView”,并使用您的代码并能够看到文本。

我唯一改变的不是为 ImageAdapter 创建一个类,而是使用你的 MyAdapter。在活动 HelloGridView.java onCreate 中,我使用了“MyAdapter”而不是“ImageAdapter”。我根本没有改变布局。

这是我在运行您的代码时得到的屏幕截图。

【讨论】:

啊,谢谢您的确认。我只是重新启动我的 Eclipse,它现在可以工作了。【参考方案2】:

我看到了 GridView,所以我几乎假设这类似于 SWT?

如果是这样,您需要显示您的视图和 ViewGroup 父级之间的关系

【讨论】:

【参考方案3】:

我认为您的 getItem 实现不正确。我的头顶应该是

    return texts[position];

【讨论】:

以上是关于Android:在网格中显示文本的简单 GridView的主要内容,如果未能解决你的问题,请参考以下文章

如何用android显示实时曲线?求方法,代码

如何在 Windows 8.1 应用程序中对 XAML 网格视图进行排序?

如何在选项卡式布局中显示 Android gridview

在 asp.net 中处理 Gridview 控件中的文本框?

网格面板中的 EXT.NET 组合框显示值而不是文本

剑道网格字段值需要与显示的文本不同