2015年3月28日 星期六

How to update a spinner dynamically in Android?

http://stackoverflow.com/questions/3283337/how-to-update-a-spinner-dynamically-in-android
package com.lfo.sumtone.sdk;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Spinner;

import java.util.List;

/**
 * Created by user on 2015/3/25.
 */
public class ListBaseAdapter extends BaseAdapter {

    protected Holder holder;
    protected    Context context;
    protected LayoutInflater inflater;



    public  ListBaseAdapter( Holder holder ){
        inflater = LayoutInflater.from(holder.context);
        this.holder=holder;
        this.context=holder.getContext();

    }
    @Override
    public int getCount() {
        if(holder.getList()==null){
            return 0;
        }
        return holder.getList().size();
    }

    @Override
    public Object getItem(int position) {
        return holder.getList().get(position);
    }

    @Override
    public long getItemId(int position) {
        return holder.getItemId(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = inflater.inflate(holder.getLayout(), parent, false);

            holder.setConvertView(convertView);
            holder.setValue(position);

            holder.getConvertView().setTag(holder);
            //Utils.log("convertView == null,name:"+category.getProducts().get(position).getName());
        } else {
            holder = (Holder) holder.getConvertView().getTag();
            //Utils.log("convertView not null");
        }
        //holder.setValue(category.getProducts().get(position));

        return holder.getConvertView();
    }

    public Holder getHolder() {
        return holder;
    }

    public void setHolder(Holder holder,Spinner spinner) {
        this.holder = holder;
        spinner.setAdapter(this);
        this.notifyDataSetChanged();
    }
    public <T> void changeHolderList(List<T> list ,Spinner spinner){

        holder.list=list;
        spinner.setAdapter(this);
        this.notifyDataSetChanged();
    }
}

沒有留言:

張貼留言