无法将ViewHolder声明为静态内部类

use*_*888 3 android

在我的应用程序中,我使用listview并通过扩展标准数组适配器来定制关联的数组适配器.但是,在扩展适配器中,我无法将视图声明声明为静态内部类.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);
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

avi*_*mak 9

如果IconicAdapter是内部类,除非IconicAdapter声明为静态类,否则您将无法在其中声明内部静态类.

  • @ user1107888:只需将`ViewHolder`移动到活动的静态内部类. (5认同)
  • 在`IconicAdapter`之外移动`ViewHolder`,或在单独的java文件中定义它.这个概念很简单 - 你不能在非静态内部类中定义静态内部类 (3认同)