John
John

Reputation: 1407

Spinner hide the firstitem of dropdown view in android

I have a spinner in that i have custom adapter to add image and text when i click the spinner the array of 1st item should he hide. i have tried below code its working the first item has been gone, but remaning item has invisble mode , how to solve this

here is my code

private String[] accident_type_content = { "Type Of emergency","Road Accident", "Medical Emergency", "Crime", "Poisoning", "Fire","Drowning" };
private int accident_type_content_images[] = {R.drawable.ic_type_of_emergency, R.drawable.ic_road_accident,R.drawable.ic_medical_emergency, R.drawable.ic_crime_rape,R.drawable.ic_posion, R.drawable.ic_fire, R.drawable.ic_other };

My array adapter class

public class AccidentType extends ArrayAdapter<String> {

    Holder holder = new Holder();

    public AccidentType(Context context, int textViewResourceId,
            String[] objects) {
        super(context, textViewResourceId, objects);
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater(null);
        convertView = inflater.inflate(R.layout.no_accident, parent,
                false);

        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.icon = (ImageView) convertView.findViewById(R.id.image);

        if(position==0)
        {
            holder.icon.setVisibility(View.GONE);
            holder.icon.setVisibility(View.GONE);
        }
        else{
            holder.icon.setVisibility(View.VISIBLE);
            holder.icon.setVisibility(View.VISIBLE);
        }
        return convertView;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        return getCustomView(position, convertView, parent);
    }

    public View getCustomView(int position, View convertView,
            ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater(null);
        View row = inflater.inflate(R.layout.no_accident, parent,
                false);

        holder.name = (TextView) row.findViewById(R.id.name);
        holder.icon = (ImageView) row.findViewById(R.id.image);
        holder.name.setText(accident_type_content[position]);

        holder.icon.setVisibility(View.VISIBLE);
        holder.icon.setVisibility(View.VISIBLE);

        if(position==accident_type.getSelectedItemPosition())
        {
            row.setBackgroundColor(getContext().getResources().getColor(R.color.spinner_selected_bg));
        }


        holder.icon.setImageResource(accident_type_content_images[position]);

        return row;
    }
    private class Holder
    {
        TextView name;
        ImageView icon;
    }

}

and added to spinner

accident_type.setAdapter(new AccidentType(getActivity(),R.layout.accident_content, accident_type_content));

i want to hide the "type Of emergency " and ic_type_of_emergency image on spinner click

Upvotes: 1

Views: 4314

Answers (1)

Make it Simple
Make it Simple

Reputation: 1882

set the index (or array list) of index that you want to hide.

public class AccidentType extends ArrayAdapter<String> {

    Holder holder = new Holder();
    private int hideItemIndex;

    public AccidentType(Context context, int textViewResourceId,
            String[] objects, int hideItemIndex) {
        super(context, textViewResourceId, objects);
        this.hidingItemIndex = hidingItemIndex;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater(null);
        convertView = inflater.inflate(R.layout.no_accident, parent,
                false);
        convertView= null;
        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.icon = (ImageView) convertView.findViewById(R.id.image);

        if(position==hideItemIndex)
        {
            holder.icon.setVisibility(View.GONE);
            holder.icon.setVisibility(View.GONE);
            convertView= holder;
        }
        else{
             convertView= super.getDropDownView(position, null, parent);
        }
        return convertView;

    }

create the list of items.

int hideItemIndex = 0;

CustomAdapter dataAdapter = new CustomAdapter(this, android.R.layout.simple_spinner_item, list, hideItemIndex);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(dataAdapter);

I think this may helps you.

Upvotes: 1

Related Questions