blackHawk
blackHawk

Reputation: 6307

How to implement getView when creating custom spinner

I want to have custom spinner that has image and a textView in drop down list so I created different layout and inflated it, and its working fine but for layout of spinner before pressing spinner I just want to have a text like "choose from list" but when I inflating with

android.R.layout.simple_spinner_item

for getView, I'm just getting a drop down arrow and not text

How to populate layout in getView, do i have to create new dataset? different from dropdown? here is my code: I'm implementing SpinnerAdapter for custom adapter

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

    convertView = inflater.inflate(R.layout.spinner_item, parent, false);
    ImageView iv = (ImageView) convertView.findViewById(R.id.iv);
    TextView tv = (TextView) convertView.findViewById(R.id.tv1);

    iv.setImageResource(R.drawable.flower);
    tv.setText(itemList[position]);

    return convertView;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(android.R.layout.simple_spinner_item, 
                                  parent, false);

   return convertView;
}

Upvotes: 0

Views: 934

Answers (2)

Cà phê đen
Cà phê đen

Reputation: 1953

text1 is the identifier for TextView in android.R.layout.simple_spinner_item

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    convertView = inflater.inflate(android.R.layout.simple_spinner_item, 
                                  parent, false);

    TextView text1 = (TextView) convertView.findViewById(android.R.id.text1);

    text1.setText(itemList[position]);

    return convertView;
}

Upvotes: 1

AndroidGeek
AndroidGeek

Reputation: 409

Declare the ViewHolder Class inside your spinner adapter

private static class ViewHolder{
        TextView tv_itemname;
}

And modify your getView() method like this:

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

        View vi = convertView;
        SpinnerListAdapter.ViewHolder holder;

        if(convertView==null){
            vi = inflater.inflate(R.layout.spinner_item_row, null);
            holder = new SpinnerListAdapter.ViewHolder();
            holder.tv_itemname = (TextView) vi.findViewById(R.id.tv_itemname);
            vi.setTag( holder );
        }
        else
        {
            holder = (SpinnerListAdapter.ViewHolder) vi.getTag();
        }


        if (position == 0)
        {
            holder.tv_itemname.setText("Choose one of the following category");
        }else{
            holder.tv_itemname.setText(itemList[position]);
        }

        return vi;
    }

Upvotes: 1

Related Questions