Add image to item (spinner)

前端 未结 1 451
轻奢々
轻奢々 2021-01-22 18:28

Hi I am an amateur in android .I would like to add images to my spinner\'s item. Unfortunately, I dont know how to do it . Below is my xml file and MainActivity. Thanks for rea

1条回答
  •  迷失自我
    2021-01-22 18:58

    Use custom Spinner

    activity_main

    
    
        
    
    
    


    custom_spinner_items.xml

    
    
    
        
    
        
    
    

    MainActivity.java

    package example.abhiandriod.customspinnerexample;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    
    
        String[] countryNames={"India","China","Australia","Portugle","America","New Zealand"};
        int flags[] = {R.drawable.india, R.drawable.china, R.drawable.australia, R.drawable.portugle, R.drawable.america, R.drawable.new_zealand};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //Getting the instance of Spinner and applying OnItemSelectedListener on it
            Spinner spin = (Spinner) findViewById(R.id.simpleSpinner);
            spin.setOnItemSelectedListener(this);
    
            CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),flags,countryNames);
            spin.setAdapter(customAdapter);
        }
    
    
        //Performing action onItemSelected and onNothing selected
        @Override
        public void onItemSelected(AdapterView arg0, View arg1, int position,long id) {
            Toast.makeText(getApplicationContext(), countryNames[position], Toast.LENGTH_LONG).show();
        }
    
        @Override
        public void onNothingSelected(AdapterView arg0) {
            // TODO Auto-generated method stub
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    

    CustomAdapter.java

    package example.abhiandriod.customspinnerexample;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class CustomAdapter extends BaseAdapter {
        Context context;
        int flags[];
        String[] countryNames;
        LayoutInflater inflter;
    
        public CustomAdapter(Context applicationContext, int[] flags, String[] countryNames) {
            this.context = applicationContext;
            this.flags = flags;
            this.countryNames = countryNames;
            inflter = (LayoutInflater.from(applicationContext));
        }
    
        @Override
        public int getCount() {
            return flags.length;
        }
    
        @Override
        public Object getItem(int i) {
            return null;
        }
    
        @Override
        public long getItemId(int i) {
            return 0;
        }
    
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view = inflter.inflate(R.layout.custom_spinner_items, null);
            ImageView icon = (ImageView) view.findViewById(R.id.imageView);
            TextView names = (TextView) view.findViewById(R.id.textView);
            icon.setImageResource(flags[i]);
            names.setText(countryNames[i]);
            return view;
        }
    }
    

    Source from this website

    0 讨论(0)
提交回复
热议问题