【问题标题】:Cannot declare ViewHolder as static inner class无法将 ViewHolder 声明为静态内部类
【发布时间】:2012-05-12 22:35:42
【问题描述】:

在我的应用程序中,我使用列表视图并通过扩展标准数组适配器自定义了关联的数组适配器。但是,在扩展适配器内部,我无法将视图保持器声明为静态内部类。 Eclipse 不断给出“静态类型只能在静态或顶级类型中声明”的错误。代码如下:

public class IconicAdapter extends ArrayAdapter<String>
{
    public static class ViewHolder
    {
        public TextView text;
        public ImageView image;
    }

    public IconicAdapter() {
        super(MainActivity.this,R.layout.row,values);
        // TODO Auto-generated constructor stub
    }

    public View getView(int position,View convertView, ViewGroup parent)
    {
        View row = convertView;
        if(row == null)
        {
            LayoutInflater inflater = getLayoutInflater();
            row = inflater.inflate(R.layout.row, parent,false);
        }
        TextView label =(TextView)row.findViewById(R.id.label);
        label.setText(values[position]);
        ImageView icon = (ImageView)row.findViewById(R.id.icon);
        icon.setImageResource(R.drawable.ok);

        return (row);
    }
}

有什么建议吗?

【问题讨论】:

  • IconicAdapterIconicAdapter.java 中,还是IconicAdapter 是其他东西的内部类?
  • IconicAdapter 是包含列表活动的活动类的内部类

标签: android


【解决方案1】:

如果IconicAdapter 是一个内部类,您将无法在其中声明一个内部静态类,除非IconicAdapter 被声明为一个静态类。

【讨论】:

  • @user1107888:只需将ViewHolder 移动为活动的静态内部类。
  • @CommonsWare:这可行,我将答案标记为已接受,但请您详细说明一下这个概念。谢谢。
  • ViewHolder 移出IconicAdapter,或在单独的java 文件中定义它。这个概念很简单——你不能在非静态内部类中定义静态内部类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 2016-04-17
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多