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(); } }
2015年5月2日 星期六
StockWheelAdapter extends AbstractWheelTextAdapter
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言