2015年5月2日 星期六

StockWheelAdapter extends AbstractWheelTextAdapter

package suntone.lfo.com.suntonehelper.adapter;
import android.content.Context;
import com.lfo.suntone.db.Stock;import com.lfo.suntone.db.Stocktype;
import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Iterator;import java.util.List;
import kankan.wheel.widget.WheelView;import kankan.wheel.widget.adapters.AbstractWheelTextAdapter;import suntone.lfo.com.suntonehelper.tool.Utils;import suntone.lfo.com.suntonehelper.tool.WarehouseTool;
/** * Created by user on 2015/4/27. */public class StockWheelAdapter extends AbstractWheelTextAdapter {
    private List<Stock> list;    private List<Stock> originList;
    private List<Stock> filtlist;    private Context context;    private WheelView thiswheelView;
    protected StockWheelAdapter(Context context) {
        super(context);    }

    public StockWheelAdapter(Context context, List list,WheelView thiswheelView) {
        super(context);        this.context = context;        this.list=new ArrayList();        originList=new ArrayList<>();        filtlist=new ArrayList<>();        this.list = list;        this.thiswheelView=thiswheelView;        this.originList.addAll(list);        thiswheelView.setVisibleItems(list.size());
    }

    public Boolean isListNullOrEmpty(){
        if(this.list==null){
            return true;        }
        if(this.list.isEmpty()){
            return true;        }
        return false;    }
    public Stock getSelected(WheelView v) {
        if(list.isEmpty()){
            Utils.instance.logClaz(this,"getSelected() list.isEmpty");            return null;        }
        if(list.size()==v.getCurrentItem()){
            Utils.instance.logClaz(this,"getSelected() v.getCurrentItem():"+v.getCurrentItem()+",list.size():"+list.size());            return null;        }
        return list.get(v.getCurrentItem());
    }

    public int getSelectedId(WheelView v) {
        return list.get(v.getCurrentItem()).getId();
    }

    @Override    protected CharSequence getItemText(int index) {


        Stock stock = list.get(index);        if (stock == null) {
            return "";        }
        Stocktype stocktype = WarehouseTool.instance.getStocktype(context, stock);        if (stocktype == null) {
            return "";        }
        return stocktype.getName();    }

    public void clearAndFilterBystocktype(String methodname, int id) {
        this.list.clear();        this.list.addAll(originList);
        filterBystocktype(methodname, id);
    }

    public void filterBystocktype(String methodname, int id) {
        this. filtlist.clear();        List stocktypelist = WarehouseTool.instance.getListInStorage(context, Stocktype.class);       // ArrayList flist=new ArrayList(this.list);        Iterator< Stock> iter = this.list.iterator();
        while (iter.hasNext()) {
            Stock t=iter.next();
            int filterid = -1;            Stocktype stocktypeOfStock = WarehouseTool.instance.getStocktypeInList(context, t, stocktypelist);            if (stocktypeOfStock == null) {
                continue;            }
            //example:  filterid= stocktype.getCategoryId();            try {
                filterid = (int) Stocktype.class.getDeclaredMethod(methodname).invoke(stocktypeOfStock);            } catch (IllegalAccessException e) {
                e.printStackTrace();            } catch (InvocationTargetException e) {
                e.printStackTrace();            } catch (NoSuchMethodException e) {
                e.printStackTrace();            }

            if (filterid == id) {
                filtlist.add(t);            }
        }
        changeList(filtlist);    }

    public void filter(String methodname, int id) {
        this. filtlist.clear();        Iterator< Stock> iter = this.list.iterator();
        while (iter.hasNext()) {
            Stock t=iter.next();            int inlistid = -1;
            try {
                inlistid = (int) Stock.class.getDeclaredMethod(methodname).invoke(t);            } catch (IllegalAccessException e) {
                e.printStackTrace();            } catch (InvocationTargetException e) {
                e.printStackTrace();            } catch (NoSuchMethodException e) {
                e.printStackTrace();            }
            if (inlistid == id) {
                filtlist.add(t);            }
        }
        changeList(filtlist);    }

    public void clearAndFilterOriginList(String methodname, int id) {
        this.list.clear();        this.list.addAll(originList);
        this.notifyDataChangedEvent();        filtlist.clear();        filter(methodname, id);    }

    public void changeList(List list) {
        this.list.clear();        this.list.addAll(list);
        thiswheelView.invalidateWheel(true);//把CACHE清除 以免殘留        thiswheelView.setVisibleItems(list.size());        this.notifyDataChangedEvent();    }

    @Override    public int getItemsCount() {
        if (list == null) {
            return 0;        }
        return list.size();    }
}

沒有留言:

張貼留言