2011-09-10 93 views
2

我正在为我的androids屏幕做一个基类,它有一个列表控件。有没有办法让基类的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。或者不要覆盖它,当选择列表中的项目时,将自动调用基类的方法。

+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

嗨,谢谢,我不知道这个关于java,我学到了一些新的东西!!!!!当我在项目中工作时,学习java的种类。 –

相关问题