Tomislav Babic
Tomislav Babic

Reputation: 21

How to change imageview image based on spinner selection?

I am trying to change image in imageview based on spinner selection, looked for things like this on stackoverflow and internet but nothing works! Why? Any help appreciated! Here is my .java source:

public class ChordsActivity extends Activity implements OnItemSelectedListener{ Spinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chords);
    spinner = (Spinner) findViewById(R.id.SpinnerAkordi);
    spinner.setOnItemSelectedListener(this);

    ImageView chord_img=(ImageView) findViewById(R.id.image);
    chord_img.setImageResource(R.drawable.c_dur);
}



@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    int position = spinner.getSelectedItemPosition ();
    ImageView chord_img= new ImageView(this); //delete this and it will work
    switch (position){
    case 0:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("C").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.c_dur);
        break;
    case 1:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("D").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    case 2:
    new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("E").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    }
}

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

}

And imageview part of .xml:

Answer: Delete: ImageView chord_img= new ImageView(this); Its because I already had an imageview and with this line I created new imageview which wasn't visible.

Upvotes: 0

Views: 4220

Answers (1)

Philip Sheard
Philip Sheard

Reputation: 5825

If you promote the local variable chord_img to a field, it might help. Viz:

private ImageView chord_img;

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    int position = spinner.getSelectedItemPosition ();
    chord_img = new ImageView(this);
    switch (position){
    case 0:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("C").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.c_dur);
        break;
    case 1:
        new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("D").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    case 2:
    new AlertDialog.Builder(this).setTitle("Odabrali ste akord:").setMessage("E").setNeutralButton("Close", null).show();
        chord_img.setImageResource(R.drawable.e_dur);
        break;
    }
}

Upvotes: 2

Related Questions