2011-09-10 3 views
2

내 안드로이드 화면의 기본 클래스를 만들고 있는데, 목록 컨트롤이 있습니다. 기본 클래스의 onListItemClick이 호출되어 목록 항목이 선택되었음을 알리는 방법이 있습니까? 그것은 부모 클래스에서 함수를 호출 할 수 있습니다 ??Java의 부모 클래스에서 함수를 호출하는 방법이 있습니까?

코드 :

public class cHome extends cBase { 
String[] MyItems={ 
     "Gate Directions", 
     "Food & Beverges", 
     "Shjops", 
     "Banking", 
     "Official Agencies", 
     "Amenities & Services", 
     "Restrooms" 
     }; 

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle, MyItems); 
// Display=MyItems; 
} 

코드 :

public class cBase extends ListActivity { 

String[] items={"CASUAL","DRESSES","CAREER","OUTWEAR","FOOTWEAR", 
     "JEWELRY","ACCESSORIES"}; 
String[] Display; 


public void onCreate(Bundle icicle, String[] items2) { 
    Display=items2; 
    super.onCreate(icicle); 

    setContentView(R.layout.baselayout); 
    setListAdapter(new IconicAdapter(this)); 
// selection=(TextView)findViewById(R.id.selection); 

// set values in header 
    // set header 
    TextView mFlight = (TextView)findViewById(R.id.idFlyerFlightNumber); 
    mFlight.setText(cGlobals.mFlightNumber);  

    TextView mDes = (TextView)findViewById(R.id.idFlyerDestanation); 
    mDes.setText(cGlobals.mDestanation); 

} 


class IconicAdapter extends ArrayAdapter { 
    Activity context; 

    IconicAdapter(Activity context) { 
     super(context, R.layout.row, Display); 

     this.context=context; 
    } 

    public View getView(int position, View convertView, 
              ViewGroup parent) { 
     LayoutInflater inflater=context.getLayoutInflater(); 
     View row=inflater.inflate(R.layout.row, null); 
     TextView label=(TextView)row.findViewById(R.id.label); 

     label.setText(Display[position]); 
     ImageView icon=(ImageView)row.findViewById(R.id.icon); 

//  String[] items={"CASUAL","DR ESSES","CAREER","OUTWEAR","FOOTWEAR", 
    //   "JEWELRY","ACCESSORIES"}; 

     switch(position) 
     { 
     case 0: 
    //  icon.setImageResource(R.drawable.formobile_items); 
      break; 

     case 1: 
     // icon.setImageResource(R.drawable.fashion_dress); 
      break; 

     case 2: 
//   icon.setImageResource(R.drawable.fashion_career); 
      break; 

     case 3: 
//   icon.setImageResource(R.drawable.fashion_outwear); 
      break; 

     case 4: 
    //  icon.setImageResource(R.drawable.fashion_footwear); 
      break; 

     case 5: 
//   icon.setImageResource(R.drawable.fashion_jewelry); 
      break; 

     case 6: 
//   icon.setImageResource(R.drawable.fashion_accessories); 
      break; 


     } 
     return(row); 
    } 
} 
} 
+0

당신은 표시해야하고 어떤 방법 통화 할. – Clint

답변

3

당신은 당신의 자식 클래스에 onListItemClick을 무시하고 단지에 super.onListItemClick를 호출 할 수 있습니다. 또는이를 무시하지 않고 기본 클래스의 onListItemClick 메서드가 목록의 항목이 선택된 경우 자동으로 호출됩니다.

+0

안녕하세요, 귀하의 이상적인 작품, 너무 간단 !!!!!!! 고마워, 테드 –

5

질문을 이해하는 경우 기본 클래스가이를 확장 한 클래스에서 메서드를 호출 할 수있는 방법이 필요합니다.

이 작업을 수행하는 한 가지 방법은 확장 클래스 이 어떤 방법으로 구현해야 하는지를 지정하는 "계약"을 수립하는 것입니다.. 당신은 추상적 인 클래스 나 인터페이스로 그렇게합니다. 그러면 기본 클래스는 클래스가 그것을 확장 할 때 사용할 수있는 메소드를 알고 호출을 할 수 있습니다. 다음

public abstract class BaseThing { 

    public void foo() { 
     bar(); 
    } 

    public abstract bar(); 
} 

:

public ParentThing extends BaseThing { 
    public void bar() { 
     System.out.println("Hey, look at that. It worked!"); 
    } 
} 
+0

안녕하세요, 자바에 대해 이것을 몰랐습니다. 새로운 것을 배웠습니다 !!!!! 내가 프로젝트에서 일하는 동안 자바를 배우는 것. –

관련 문제