Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf8 -*-
- from kivy.adapters.dictadapter import DictAdapter
- from kivy.uix.listview import ListItemButton, ListItemLabel, \
- CompositeListItem, ListView
- from kivy.uix.gridlayout import GridLayout
- integers_dict = {str(i): {'text': str(i), 'is_selected': False}
- for i in range(100)}
- class MainView(GridLayout):
- '''Uses :class:`CompositeListItem` for list item views comprised by two
- :class:`ListItemButton`s and one :class:`ListItemLabel`. Illustrates how
- to construct the fairly involved args_converter used with
- :class:`CompositeListItem`.
- '''
- def __init__(self, **kwargs):
- kwargs['cols'] = 2
- super(MainView, self).__init__(**kwargs)
- # This is quite an involved args_converter, so we should go through the
- # details. A CompositeListItem instance is made with the args
- # returned by this converter. The first three, text, size_hint_y,
- # height are arguments for CompositeListItem. The cls_dicts list
- # contains argument sets for each of the member widgets for this
- # composite: ListItemButton and ListItemLabel.
- args_converter = lambda row_index, rec: {
- 'text': rec['text'],
- 'size_hint_y': None,
- 'height': 25,
- 'cls_dicts': [{'cls': ListItemButton,
- 'kwargs': {'text': u"chérie"}},
- {
- 'cls': ListItemLabel,
- 'kwargs': {
- 'text': u"Middle-{0}".format(rec['text']),
- 'is_representing_cls': True}},
- {
- 'cls': ListItemButton,
- 'kwargs': {'text': rec['text']}}]}
- item_strings = ["{0}".format(index) for index in range(100)]
- dict_adapter = DictAdapter(sorted_keys=item_strings,
- data=integers_dict,
- args_converter=args_converter,
- selection_mode='single',
- allow_empty_selection=False,
- cls=CompositeListItem)
- # Use the adapter in our ListView:
- list_view = ListView(adapter=dict_adapter)
- self.add_widget(list_view)
- if __name__ == '__main__':
- from kivy.base import runTouchApp
- runTouchApp(MainView(width=800))
Add Comment
Please, Sign In to add comment