class PMBaseAdapter
Attributes
data[RW]
Public Class Methods
new(opts={})
click to toggle source
Calls superclass method
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 4 def initialize(opts={}) super() self.data = opts.fetch(:data, []) end
Public Instance Methods
action_arguments(data, position)
click to toggle source
configure what to pass back when we tap that action
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 88 def action_arguments(data, position) data[:arguments] end
areAllItemsEnabled()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 16 def areAllItemsEnabled(); are_all_items_enabled?; end
are_all_items_enabled?()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 17 def are_all_items_enabled? true end
count()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 59 def count() data.length end
getCount()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 58 def getCount(); count(); end
getItem(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 63 def getItem(position); item_data(position); end
getItemId(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 68 def getItemId(position); item_id(position); end
getItemViewType(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 42 def getItemViewType(position); item_view_type_id(position); end
getView(position, convert_view, parent)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 73 def getView(position, convert_view, parent); view(position, convert_view, parent); end
getViewTypeCount()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 36 def getViewTypeCount(); view_type_count; end
hasStableIds()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 31 def hasStableIds(); has_stable_ids?; end
has_stable_ids?()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 32 def has_stable_ids? true end
inflate_row(xml_resource)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 141 def inflate_row(xml_resource) inflater = Potion::LayoutInflater.from(find.activity) row_view = inflater.inflate(xml_resource, nil, true) end
isEmpty()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 26 def isEmpty(); is_empty?; end
isEnabled(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 21 def isEnabled(position); is_enabled?(position); end
is_empty?()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 27 def is_empty? data.blank? end
is_enabled?(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 22 def is_enabled?(position) true end
item_data(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 64 def item_data(position) data[position] end
item_id(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 69 def item_id(position) position end
item_view_type_id(position)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 43 def item_view_type_id(position) data_item = self.item_data(position) idx = nil if data_item[:prevent_reuse] idx = Android::Widget::Adapter::IGNORE_ITEM_VIEW_TYPE else # get custom cell index idx = view_types.index(data_item[:cell_xml] || data_item[:cell_class]) # Shift custom cells up 1, no custom == index 0 idx = idx ? (idx + 1) : 0 end idx end
screen()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 9 def screen @screen ||= rmq.screen end
screen=(value)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 12 def screen=(value) @screen end
selected_view(cv, data)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 123 def selected_view(cv, data) row_view = cv unless row_view if data[:cell_class] row_view = rmq.create!(data[:cell_class]) elsif data[:cell_xml] row_view = inflate_row(data[:cell_xml]) rmq.tag_all_from_resource_entry_name(row_view) else # Default is Sipmle List Item 1 # TODO: Possibly use Android::R::Layout::Simple_list_item_2 which has subtitle #https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/simple_list_item_2.xml row_view = inflate_row(Android::R::Layout::Simple_list_item_1) end end row_view end
update_view(view, data)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 92 def update_view(view, data) update = data[:update] if update.is_a?(Proc) update.call(out, data) elsif update.is_a?(Symbol) || update.is_a?(String) if find.screen.respond_to?(update) find.screen.send(update, view, data) else mp "Warning: #{find.screen.class} does not respond to #{update}" end elsif data[:properties] data[:properties].each do |k, v| if view.respond_to?("#{k}=") view.send("#{k}=", v) else mp "Warning: #{view.class} does not respond to #{k}=" end end elsif view.is_a?(Potion::TextView) # Specific to use of Simple list item 1 view.text = data[:title] elsif update mp "We don't know how to update your cell" end end
view(position, convert_view, parent)
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 74 def view(position, convert_view, parent) data = item_data(position) out = selected_view(convert_view, data) update_view(out, data) if data[:action] find(out).on(:tap) do arguments = action_arguments data, position find.screen.send(data[:action], arguments, position) end end out end
view_type_count()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 37 def view_type_count() # all custom items added up (+1 for non-custom) view_types.length + 1 end
view_types()
click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 118 def view_types # unique cell_xmls and cell_classes data.map{ |i| i[:cell_xml] || i[:cell_class]}.compact.uniq end