Skip to content

Instantly share code, notes, and snippets.

@geojeff
Created August 22, 2013 12:53
Show Gist options
  • Save geojeff/6306746 to your computer and use it in GitHub Desktop.
Save geojeff/6306746 to your computer and use it in GitHub Desktop.
from kivy.adapters.listadapter import ListAdapter
from kivy.adapters.models import SelectableDataItem
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.listview import ListView, ListItemButton
class StringItem(SelectableDataItem):
def __init__(self, **kwargs):
super(StringItem, self).__init__(**kwargs)
self.text = kwargs.get('text', '')
self.is_selected = kwargs.get('is_selected', False)
string_data_items = [StringItem(text=str(i)) for i in range(100)]
class StringsListAdapter(ListAdapter):
def db_query_one(self, list_adapter, *args):
self.data = string_data_items[10:15]
def db_query_two(self, list_adapter, *args):
self.data = string_data_items[4:9]
def db_query_three(self, list_adapter, *args):
self.data = string_data_items[13:-1]
class QueryResultsView(GridLayout):
def __init__(self, **kwargs):
kwargs['cols'] = 2
super(QueryResultsView, self).__init__(**kwargs)
queries = BoxLayout(
orientation='vertical', size_hint=(None, 1), width=150)
query_button_one = Button(text='DB Query One')
query_button_two = Button(text='DB Query Two')
query_button_three = Button(text='DB Query Three')
queries.add_widget(query_button_one)
queries.add_widget(query_button_two)
queries.add_widget(query_button_three)
self.add_widget(queries)
list_item_args_converter = \
lambda row_index, selectable: {'text': selectable.text,
'size_hint_y': None,
'height': 25}
strings_list_adapter = \
StringsListAdapter(data=string_data_items,
args_converter=list_item_args_converter,
selection_mode='single',
allow_empty_selection=False,
cls=ListItemButton)
query_button_one.bind(on_release=strings_list_adapter.db_query_one)
query_button_two.bind(on_release=strings_list_adapter.db_query_two)
query_button_three.bind(on_release=strings_list_adapter.db_query_three)
strings_list_view = \
ListView(adapter=strings_list_adapter, size_hint=(.2, 1.0))
self.add_widget(strings_list_view)
if __name__ == '__main__':
from kivy.base import runTouchApp
runTouchApp(QueryResultsView(width=800))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment