mirror of https://github.com/kivy/kivy.git
59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
from kivy.adapters.dictadapter import DictAdapter
|
|
from kivy.uix.listview import ListItemButton, ListItemLabel, \
|
|
CompositeListItem, ListView
|
|
from kivy.uix.gridlayout import GridLayout
|
|
|
|
from fixtures import integers_dict
|
|
|
|
|
|
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': rec['text']}},
|
|
{
|
|
'cls': ListItemLabel,
|
|
'kwargs': {
|
|
'text': "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))
|