Search code examples
androidandroid-gallery

Android Gallery and Onclicklistener Constructor not compiling


Here is my mainactivity. I am following this from a gallery tutorial. It says that main, View v, & OnItemClickListener cannot be resolved to a type. I have been toying aroudn with this and the tutorial doesnt give much away.

public class MainActivity extends Activity {

 ImageView selectedImage;  
 private Integer[] mImageIds = {
            R.drawable.image1,
            R.drawable.image2,
            R.drawable.image3,
            R.drawable.image4,
            R.drawable.image5,
            R.drawable.image6,
            R.drawable.image7,
            R.drawable.image8
    };
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

         Gallery gallery = (Gallery) findViewById(R.id.gallery1);
    selectedImage=(ImageView)findViewById(R.id.imageView1);
    gallery.setSpacing(1);
    gallery.setAdapter(new GalleryImageAdapter(this));

     // clicklistener for Gallery
    gallery.setOnClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(MainActivity.this, "Your selected position = " + position, Toast.LENGTH_SHORT).show();
            // show the selected Image
            selectedImage.setImageResource(mImageIds[position]);
        }
    });
}

}


Solution

  • You are mixing the listeners.

    void setOnClickListener(View.OnClickListener l)
    // Register a callback to be invoked when this view is clicked.
    
    void setOnItemClickListener(AdapterView.OnItemClickListener listener)
    // Register a callback to be invoked when an item in this AdapterView has been clicked.
    

    Use:

    gallery.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(MainActivity.this, "Your selected position = " + position, Toast.LENGTH_SHORT).show();
            // show the selected Image
            selectedImage.setImageResource(mImageIds[position]);
        }
    });