猕猴桃多色ListView

时间:2018-07-02 12:25:22

标签: python listview colors kivy

我想为列表视图中的所有元素定义唯一的颜色

实际上我是这样创建列表视图的:

from kivy.adapters.listadapter import ListAdapter
from kivy.uix.listview import ListItemButton, ListView

data = ["blue","green","yellow","black","white"]

list_adapter = ListAdapter(data=data,
                           args_converter=args_converter,
                           cls=ListItemButton,
                           selection_mode='single',
                           allow_empty_selection=False)

list_view = ListView(adapter=list_adapter)

所有元素都具有绿色背景,我想要多色listview,我希望蓝色项目具有蓝色背景,黑色项目具有黑色背景...等。

有可能吗? 感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您必须使用$lead_tags_list = array(); $tags_source = $this->get_tags_by_name('Lead Source'); $tags_status = $this->get_tags_by_name('Lead Status'); $tags_stages = $this->get_tags_by_name('Stages'); $tags_lead_priority = $this->get_tags_by_name('Lead Priority'); $this->contact_data_set = 0; $main_query = DB::table('bas_lead As a') ->select('a.*') ->selectRaw('(SELECT GROUP_CONCAT(tag_id) FROM bas_lead_to_tag WHERE lead_id = a.lead_id) as tag_list') ->selectRaw(DB::raw('@rownum := @rownum + 1 AS rownum')) ->join('bas_contact AS b', 'b.contact_id', '=' , 'a.contact_id') ->where('a.status','=',1) ->where('b.status','=',1) ->orderBy('a.lead_id','DESC'); return DataTables::of($main_query) ->addIndexColumn() ->addColumn('sr_num', function ($query) { return $query->rownum; }) ->addColumn('action', function ($query) { return '<a href="'.$query->lead_id.'" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Edit</a>'; }) ->addColumn('lead_basic', function ($query) { $contact_id = $query->contact_id; $contact_data = DB::table('bas_contact')->where('contact_id', $contact_id)->get(); $salutation = $contact_data[0]->salutation; $first_name = $contact_data[0]->first_name; $middle_name = $contact_data[0]->middle_name; $last_name = $contact_data[0]->last_name; $full_name = $first_name.' '.$middle_name.' '.$last_name; $company_id = $contact_data[0]->company_id; // $matchThese = ['company_id' => $company_id, 'status' => 1]; $company_data = DB::table('bas_company')->where('company_id', $company_id)->get()->toarray(); $company_name = 'test'; if(isset($company_data)){ // $company_name = ''; // foreach ($company_data as $key => $object) { // $company_name = $object->company_name; // } } return array($full_name); }) ->addColumn('company', function ($query) { $contact_id = $query->contact_id; $contact_data = DB::table('bas_contact')->where('contact_id', $contact_id)->get(); $company_id = $contact_data[0]->company_id; // $matchThese = ['company_id' => $company_id, 'status' => 1]; $company_data = DB::table('bas_company')->where('company_id', $company_id)->get()->toarray(); $company_name[0] = 'test'; if(isset($company_data)){ $company_name = ''; foreach ($company_data as $key => $object) { $company_name = $object->company_name; } } return array($company_name); }) ->addColumn('lead_contact', function ($query) { $contact_id = $query->contact_id; $phone_mapper_id = DB::table('bas_contact_to_phone')->where('contact_id', $contact_id)->get()->toarray(); $email_mapper_id = DB::table('bas_contact_to_email')->where('contact_id', $contact_id)->get()->toarray(); // $address_mapper_id = DB::table('bas_company_to_address')->where('company_id',$company_id)->get(); // if($address_mapper_id){ // $matchThese = ['address_id' => $address_mapper_id[0]->address_id, 'status' => 1]; // $address_data = DB::table('bas_address')->where($matchThese)->get(); // $address = ''; // } $phone_array = array(); $email_array = array(); $contact_array = array(); if($phone_mapper_id){ foreach($phone_mapper_id as $phone_data){ if(isset($phone_data)){ $phone_details = DB::table('bas_phone')->where('phone_id', $phone_data->phone_id)->get(); $phone = decrypt($phone_details[0]->phone_number); if(isset($phone)){ array_push($phone_array, $phone); array_push($contact_array, $phone); } } } } if($email_mapper_id){ foreach($email_mapper_id as $email_data){ if(isset($email_data)){ $email_details = DB::table('bas_email')->where('email_id', $email_data->email_id)->get(); $email = decrypt($email_details[0]->email_address); if(isset($email)){ array_push($email_array, $email); array_push($contact_array, $email); } } } } return array('contact_details' =>$contact_array); }) ->addColumn('productservices', function ($query) { $contact_id = $query->contact_id; $contact_data = DB::table('bas_contact')->where('contact_id', $contact_id)->get(); $salutation = $contact_data[0]->salutation; $first_name = $contact_data[0]->first_name; $middle_name = $contact_data[0]->middle_name; $last_name = $contact_data[0]->last_name; $full_name = $first_name.' '.$middle_name.' '.$last_name; return $full_name; }) ->addColumn('lead_details', function ($query) { $contact_id = $query->contact_id; $contact_data = DB::table('bas_contact')->where('contact_id', $contact_id)->get(); $salutation = $contact_data[0]->salutation; $first_name = $contact_data[0]->first_name; $middle_name = $contact_data[0]->middle_name; $last_name = $contact_data[0]->last_name; $full_name = $first_name.' '.$middle_name.' '.$last_name; return $full_name; }) ->addColumn('last_comm', function ($query) { $contact_id = $query->contact_id; $contact_data = DB::table('bas_contact')->where('contact_id', $contact_id)->get(); $salutation = $contact_data[0]->salutation; $first_name = $contact_data[0]->first_name; $middle_name = $contact_data[0]->middle_name; $last_name = $contact_data[0]->last_name; $full_name = $first_name.' '.$middle_name.' '.$last_name; return $full_name; }) ->addColumn('designation', function ($query) { $contact_id = $query->contact_id; $contact_data = DB::table('bas_contact')->where('contact_id', $contact_id)->get(); $designation_id = $contact_data[0]->designation_id; $tag_name = ''; if($designation_id){ $tag_name = $this->get_tag_name_by_id($designation_id); } return array($tag_name); }) ->addColumn('source', function ($query) use($tags_source,$lead_tags_list) { $source_array = array(); // i want to used this below query results , in below AddColumn stub as well //$lead_tags = (DB::table('bas_lead_to_tag')->where('lead_id', $query->lead_id)->get()->pluck('tag_id')->toarray()); //$lead_tags = $this->get_lead_to_tags_list($query->lead_id); $lead_tags = explode(',', $query->tag_list); //echo $contains = array_has(array_values($lead_tags),array_values($tags_source)); $result=array_intersect(array_values($lead_tags),array_values($tags_source)); foreach($result as $value){ $tag_name = $this->get_tag_name_by_id($value); array_push($source_array, $tag_name); } return $source_array; }) ->addColumn('statusprio', function ($query) use($tags_status,$tags_lead_priority,$lead_tags_list) { $status_array = array(); //$lead_tags = $this->get_lead_to_tags_list($query->lead_id); $lead_tags = explode(',', $query->tag_list); $merged_data = array_merge(array_values($tags_status), array_values($tags_lead_priority)); // print_r($tags_status); // exit; $result=array_intersect(array_values($lead_tags),$merged_data); foreach($result as $value){ $tag_name = $this->get_tag_name_by_id($value); array_push($status_array, $tag_name); } return $status_array; }) ->addColumn('stage', function ($query) use($tags_stages,$lead_tags_list) { $stage_array = array(); //$lead_tags = $this->get_lead_to_tags_list($query->lead_id); $lead_tags = explode(',', $query->tag_list); $result=array_intersect(array_values($lead_tags),array_values($tags_stages)); foreach($result as $value){ $tag_name = $this->get_tag_name_by_id($value); array_push($stage_array, $tag_name); } $cache = \Cache::pull('lead_to_tag_list_'.$query->lead_id); unset($cache['lead_to_tag_list_'.$query->lead_id]); return $stage_array; }) ->addColumn('action', function ($query) { return '<div class="settings-icon-list action" data-target-div="action_div"><a href="javascript:void(0);"><span class="glyphicon glyphicon-cog"></span><span class="caret-list"></span></a></div>'; }) ->make(true);` ,并将数据传递到词典列表中:

args_converter

enter image description here