title: How to display an ImageView in a custom view in Android
body: <p>I have an activity that calls a custom view when a button is pressed.  The custom view runs fine until I try to add an ImageView to it.  I have tried this in my xml that is called in my main activity with setContentView:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  &gt;
  
  &lt;com.mypackage.mycustomview android:id="@+id/fbv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      &gt;
  
          &lt;ImageView android:id="@+id/pistolView"
                android:src="@drawable/pistol"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/&gt; 
  
  &lt;/com.mypackage.mycustomview&gt; 
  </code></pre>
  
  <p></p>
  
  <p>I get a ClassCastException when I click on the button in my main activity which initiates this custom view.  All I want to do is make a clickable image inside of my custom view.</p>
  
  <p>The ImageView displays fine and clicks if I put it in my main activity and main.xml like this:</p>
  
  <p>
  </p>
  
  <pre><code>&lt;Button android:id="@+id/button"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Play Vs CPU" /&gt;
  
  
          &lt;ImageView android:id="@+id/pistolView"
                android:src="@drawable/pistol"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/&gt; 
  </code></pre>
  
  <p></p>
  
  <p>I really am not good with the xml layouts in android, so I have no idea what I'm missing here.  Any help is greatly appreciated.</p>
  
  <p>here is the mycustomview class:</p>
  
  <pre><code>       package com.mypackage;
  
      import java.util.ArrayList;
  
      import android.app.Activity;
      import android.content.Context;
      import android.content.res.Resources;
      import android.graphics.Bitmap;
      import android.graphics.BitmapFactory;
      import android.graphics.Canvas;
      import android.graphics.Paint;
      import android.graphics.Point;
      import android.graphics.drawable.Drawable;
      import android.os.Handler;
      import android.os.Message;
      import android.text.format.Time;
      import android.util.AttributeSet;
      import android.util.Log;
      import android.view.KeyEvent;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.widget.ImageView;
      import android.widget.LinearLayout;
      import android.widget.TextView;
  
      public class mycustomview extends View{
              final Paint mPaint = new Paint();
              private Context mContext;
              private Resources res = getResources();
              private GameControls _controls;
              private GameJoystick _joystick;
              private GameJoystick Rjoystick;
              Paint paint = new Paint();
              private long currTime;
              private Time time = new Time();
              private Hero mHero;
              private Gun mGun;
              private Bitmap heroBit;
              private float possibleX;
              private float possibleY;
              private float lazerX;
              private float lazerY;
              public ArrayList&lt;Wall&gt; wallList = new ArrayList&lt;Wall&gt;();
              private Canvas mCanvas;
              private Bitmap splat;
              private Bitmap pistolBit;
              private Bitmap building;
              private ImageView pistol;
              private int i = 0;
              private int w = 0;
              Wall wall;
  
              private RefreshHandler mRedrawHandler = new RefreshHandler();
  
          class RefreshHandler extends Handler {
  
              @Override
              public void handleMessage(Message msg) {
                      //Log.d("3", "here3");
                  FanBoyView.this.update();
                  FanBoyView.this.invalidate();
              }
  
              public void sleep(long delayMillis) {
                      this.removeMessages(0);
                  sendMessageDelayed(obtainMessage(0), delayMillis);
              }
          };
  
  
          @Override
          public boolean onKeyDown(int keyCode, KeyEvent event) {
              //Log.d("--------------------&gt;code", Integer.toString(keyCode));
              if (keyCode == KeyEvent.KEYCODE_FOCUS) {
                      //Log.d("--------------------&gt;cam", "pressed");
                fireGun();
                return true;
              }
              return false;
           }
  
              public mycustomview(Context context, AttributeSet a) {
                      super(context, a);
                      mContext = context;
  
                      time.setToNow();
                      currTime = time.toMillis(false);
                      this.setFocusable(true);
                      this.setFocusableInTouchMode(true);
                      this.requestFocus();
  
                      final Paint paint = mPaint;
              paint.setColor(0xffffffff);
              paint.setAntiAlias(true);
              paint.setStrokeWidth(1);
              paint.setStrokeCap(Paint.Cap.ROUND);
              paint.setStyle(Paint.Style.STROKE);
  
                      setFocusable(true);
  
                      _joystick = new GameJoystick(mContext.getResources());
                      Rjoystick = new GameJoystick(mContext.getResources());
                      _controls = new GameControls();
                      setOnTouchListener(_controls);
  
                      Drawable bg = res.getDrawable(R.drawable.street);
                      this.setBackgroundDrawable(bg);
              setWalls();
              }
  
              @Override
              protected void  onFinishInflate(){
                      //ImageView img = (ImageView) findViewById(R.id.pistolView);
                      /*img.setOnClickListener(new OnClickListener() {
                          public void onClick(View v) {
                              Log.d("pistol","clicked");
                          }
                      });*/
              }
  ...
  </code></pre>