java.lang.NoSuchMethodException: onClick dans la vue liste sur android

dans mon application j'utilise le bouton image dans la vue liste. j'écris d'action pour chaque bouton image. mais je m'en java.lang.NoSuchMethodException: onClick exception. je ne sais pas la raison de l'erreur s'il vous plaît aider moi. comment l'action de l'écriture pour l'image des boutons . merci à l'avance.

public class InventoryListActivity extends ListActivity {
  private InventoryAdapter adapter;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inventory_list);
    adapter = new InventoryAdapter(this);
    setListAdapter(adapter);
 }
}

dans InventoryAdapter activité:

public class InventoryAdapter extends BaseAdapter implements Observer,OnClickListener {
public InventoryAdapter(Context ctx) {     
context = ctx;
inventory = IAPManager.shared().getInventory();
inventory.addObserver(this);
inventory.load();
}
public void update(Observable o, Object arg) {
switch ( ((Inventory)arg).getStatus() ) {
case LOADED:
this.notifyDataSetChanged();
break;
default:
break;
}
}
@Override
public int getCount() {
return inventory.size(Inventory.FilterType.ALL);
}
@Override
public Object getItem(int position) {
return inventory.getProducts(Inventory.FilterType.ALL).get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Product product = (Product) getItem(position);
View view;
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.inventory_list_item, null);
}
else {
view = convertView;
}
play = (ImageButton)findViewById(R.id.imageButton2);
detail = (ImageButton)findViewById(R.id.imageButton3);
buy = (ImageButton)findViewById(R.id.imageButton2);
play.setTag(position);
detail.setTag(position);
buy.setTag(position);
titleView = (TextView) view.findViewById(R.id.product_title);
titleView.setText(product.getTitle());
iconView = (ImageView) view.findViewById(R.id.product_icon);
String iconURL = product.getIconURLString();
if(AsyncImageLoader.contains(iconURL)) {
iconView.setImageDrawable(AsyncImageLoader.get(iconURL));
}
else {
iconView.setImageDrawable(null);
new AsyncImageLoader(product.getIconURLString(), new AsyncImageLoader.Delegate(){
public void imageLoaded(String urlString, Drawable imageDrawable) {
notifyDataSetChanged();
}
});
}
descriptionView = (TextView) view.findViewById(R.id.product_description);
descriptionView.setText(product.getDescription());
return view;
}
private ImageButton findViewById(int imagebutton2) {
//TODO Auto-generated method stub
return null;
}
@Override
public void onClick(View v) {
Log.e("onclick","onclick");
Integer position = (Integer) v.getTag();
switch(v.getId()){
case R.id.imageButton1:
Log.e("Buy","buy position"+position);
break;
case R.id.imageButton2:
Log.e("play","play position"+position);
break;
case R.id.imageButton3:
Log.e("detail","detail  position"+position);
break;  
}       
}

}

en xml:

            <ImageButton android:background="@drawable/play_btn"    android:focusable="false" android:onClick="onClick"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/imageButton2" android:layout_weight="0.5" />
  • pas sûr à 100%, mais je pense que le onClick() la méthode est recherché dans l'activité, et non pas dans l'adaptateur
InformationsquelleAutor M.A.Murali | 2011-06-17