2012-05-12 4 views
3

내 응용 프로그램에서 listview를 사용하고 있고 배열 어댑터를 표준으로 확장하여 관련 배열 어댑터를 사용자 정의했습니다. 그러나 확장 어댑터에서 뷰 소유자를 a로 선언 할 수 없습니다. static inner class. Eclipse는 "정적 유형은 정적 또는 최상위 레벨 유형에서만 선언 할 수 있습니다"라는 오류를 계속 제공합니다. 코드는 다음과 같습니다.ViewHolder를 정적 내부 클래스로 선언 할 수 없습니다.

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); 
    } 
} 

의견이 있으십니까? IconicAdapter이 내부 클래스 인 경우 IconicAdapter는 정적 클래스로 선언하지 않는 한

+0

'IconicAdapter.java'에'IconicAdapter'가 있습니까? 아니면 다른 것의 내부 클래스 인'IconicAdapter'입니까? – CommonsWare

+0

IconicAdapter는리스트 액티비티가 포함 된 액티비티 클래스의 내부 클래스입니다. – user1107888

답변

8

, 당신은 그 안에 내부 정적 클래스를 선언 할 수 없습니다.

+5

@ user1107888 :'ViewHolder'를 액티비티의 정적 내부 클래스로 이동하기 만하면됩니다. – CommonsWare

+0

@CommonsWare :이 작동하고 답변을 수락으로 표시하고 있지만 개념을 자세히 설명해 주시겠습니까? 감사합니다. – user1107888

+2

'IconicAdapter' 외부에서'ViewHolder'를 움직이거나 별도의 자바 파일에 정의하십시오. 개념은 쉽습니다. 정적이 아닌 내부 클래스를 정의 할 수 없습니다. – avimak

관련 문제