Ejemplo n.º 1
0
  public void processProperties(KrollDict d) {

    if (d.containsKey(TiC.PROPERTY_TEMPLATES)) {
      Object templates = d.get(TiC.PROPERTY_TEMPLATES);
      if (templates != null) {
        processTemplates(new KrollDict((HashMap) templates));
      }
    }

    if (d.containsKey(TiC.PROPERTY_SEARCH_TEXT)) {
      this.searchText = TiConvert.toString(d, TiC.PROPERTY_SEARCH_TEXT);
    }

    if (d.containsKey(TiC.PROPERTY_SEARCH_VIEW)) {
      TiViewProxy searchView = (TiViewProxy) d.get(TiC.PROPERTY_SEARCH_VIEW);
      if (isSearchViewValid(searchView)) {
        TiUIView search = searchView.getOrCreateView();
        setSearchListener(searchView, search);
        layoutSearchView(searchView);
      } else {
        Log.e(TAG, "Searchview type is invalid");
      }
    }

    if (d.containsKey(TiC.PROPERTY_CASE_INSENSITIVE_SEARCH)) {
      this.caseInsensitive = TiConvert.toBoolean(d, TiC.PROPERTY_CASE_INSENSITIVE_SEARCH, true);
    }

    if (d.containsKey(TiC.PROPERTY_SEPARATOR_COLOR)) {
      String color = TiConvert.toString(d, TiC.PROPERTY_SEPARATOR_COLOR);
      setSeparatorColor(color);
    }

    if (d.containsKey(TiC.PROPERTY_SHOW_VERTICAL_SCROLL_INDICATOR)) {
      listView.setVerticalScrollBarEnabled(
          TiConvert.toBoolean(d, TiC.PROPERTY_SHOW_VERTICAL_SCROLL_INDICATOR, true));
    }

    if (d.containsKey(TiC.PROPERTY_DEFAULT_ITEM_TEMPLATE)) {
      defaultTemplateBinding = TiConvert.toString(d, TiC.PROPERTY_DEFAULT_ITEM_TEMPLATE);
    }

    ListViewProxy listProxy = (ListViewProxy) proxy;
    if (d.containsKey(TiC.PROPERTY_SECTIONS)) {
      // if user didn't append/modify/delete sections before this is called, we process sections
      // as usual. Otherwise, we process the preloadSections, which should also contain the
      // section(s)
      // from this dictionary as well as other sections that user append/insert/deleted prior to
      // this.
      if (!listProxy.isPreload()) {
        processSections((Object[]) d.get(TiC.PROPERTY_SECTIONS));
      } else {
        processSections(listProxy.getPreloadSections().toArray());
      }
    } else if (listProxy.isPreload()) {
      // if user didn't specify 'sections' property upon creation of listview but append/insert it
      // afterwards
      // we process them instead.
      processSections(listProxy.getPreloadSections().toArray());
    }

    listProxy.clearPreloadSections();

    if (d.containsKey(TiC.PROPERTY_HEADER_VIEW)) {
      Object viewObj = d.get(TiC.PROPERTY_HEADER_VIEW);
      setHeaderOrFooterView(viewObj, true);
    } else if (d.containsKey(TiC.PROPERTY_HEADER_TITLE)) {
      headerView = inflater.inflate(headerFooterId, null);
      setHeaderTitle(TiConvert.toString(d, TiC.PROPERTY_HEADER_TITLE));
    }

    if (d.containsKey(TiC.PROPERTY_FOOTER_VIEW)) {
      Object viewObj = d.get(TiC.PROPERTY_FOOTER_VIEW);
      setHeaderOrFooterView(viewObj, false);
    } else if (d.containsKey(TiC.PROPERTY_FOOTER_TITLE)) {
      footerView = inflater.inflate(headerFooterId, null);
      setFooterTitle(TiConvert.toString(d, TiC.PROPERTY_FOOTER_TITLE));
    }

    // Check to see if headerView and footerView are specified. If not, we hide the views
    if (headerView == null) {
      headerView = inflater.inflate(headerFooterId, null);
      headerView.findViewById(titleId).setVisibility(View.GONE);
    }

    if (footerView == null) {
      footerView = inflater.inflate(headerFooterId, null);
      footerView.findViewById(titleId).setVisibility(View.GONE);
    }

    // Have to add header and footer before setting adapter
    listView.addHeaderView(headerView);
    listView.addFooterView(footerView);

    listView.setAdapter(adapter);

    super.processProperties(d);
  }