0

为什么以及如何,这一行正在处理整个数组label.setText(items[position]); 没有任何循环条件!

这是我的,正在访问 array_adapter 类的类。对于资源....

class FunnyLookingAdapter extends ArrayAdapter 
{
    Context ctxt;

    FunnyLookingAdapter(Context ctxt, int resource,String[] items) 
    {
        super(ctxt, resource, items);
        this.ctxt=ctxt;
    }

    public View getView(int position, View convertView,ViewGroup parent) 
    {
        TextView label=(TextView)convertView;

        if (convertView==null) 
        {
            convertView=new TextView(ctxt);
            label=(TextView)convertView;
        }

        label.setText(items[position]); //------------------ this is the line !
        return(convertView);
    }
}

而这一阶段的代码使用的是前一个类。所以代码是::

    GridView grd = ( GridView ) findViewById ( R.id.gd_v );

    grd.setAdapter(new FunnyLookingAdapter(this,
            android.R.layout.simple_list_item_1,
            items));

并且字符串资源数组是:

String[] items={"lorem", "ipsum", "dolor", "sit", "amet",
        "consectetuer", "adipiscing", "elit", "morbi", "vel",
        "ligula", "vitae", "arcu", "aliquet", "mollis",
        "etiam", "vel", "erat", "placerat", "ante",
        "porttitor", "sodales", "pellentesque", "augue", "purus"};
4

2 回答 2

0

试试这个代码:

Context ctxt;
String[] mItems;

FunnyLookingAdapter(Context ctxt, int resource,String[] items) 
{
    super(ctxt, resource, items);
    this.ctxt=ctxt;
    this.mItems = items;
}

public View getView(int position, View convertView,ViewGroup parent) 
{
    TextView label=(TextView)convertView;

    if (convertView==null) 
    {
        convertView=new TextView(ctxt);
        label=(TextView)convertView;
    }

    label.setText(mItems[position]); //------------------ this is the line !
    return(convertView);
}

这样您就可以访问您的项目数组。在您的代码中,字符串数组只能通过构造函数方法访问,因此该getView()函数实际上看不到它。

于 2012-12-05T11:49:13.830 回答
0

适配器的设计方式是,它将计算项目的数量并创建许多视图以供列表显示。

简而言之,循环(您正在考虑的)是在Super 类中编写的,因此您不必再次编写它,它只需处理整个数组。

您可以参考许多很好的链接来了解适配器。

  1. 了解 BaseAdapter 以及如何使用它们

  2. 了解 Android SDK 中的适配器

  3. 专业版 - 安卓

  4. 学习安卓

于 2012-12-05T12:19:48.497 回答