2016-03-22 9 views
1

私のアプリではリストビューがあります。リスト項目の各行には、多くの連絡先アプリのように名前の最初の文字を示すテキストビューがあります。私は、colors.xmlで定義されている4つの色の定義済みセットからそのテキストビューの背景色を設定する必要があります。私が望むのは、リストビューの4つの項目ごとに色が繰り返されるということです。そのために私は次のロジックリストアイテムの色を4色から設定する

color_array=activity.getResources().getIntArray(R.array.dar_list_color); 

    if (count<4) { 
    viewHolder.layout_color.setBackgroundColor(color_array[count]); 

    } 

    else 
    count=0; 


    count++; 

このことは、正常に動作しますが使用されるが、一つの問題、色の変化をスクロール上のリストビューすなわちと共通の問題があります。カウントはアダプタからの位置に関係していないので、私はこの問題を解決する方法を理解できません。ここで

は、私がここで Current Result

を実施しているもののスクリーンショットで完全なアダプターのコードのようなものについて

public class DAR_Aadapter extends BaseAdapter { 
int color_array[],count=0; 
Activity activity; 
ArrayList<DAR_List_Item> dar_List_Items; 

public DAR_Aadapter(Activity activity, ArrayList<DAR_List_Item> dar_List_Items) { 
    // TODO Auto-generated constructor stub 

    this.activity=activity; 
    this.dar_List_Items=dar_List_Items; 
    color_array=activity.getResources().getIntArray(R.array.dar_list_color); 

} 


@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return dar_List_Items.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return dar_List_Items.get(position); 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    ViewHolder viewHolder; 
    if(convertView==null) 
    { 
    viewHolder = new ViewHolder(); 
    convertView = LayoutInflater.from(activity).inflate(R.layout.dar_swipe_list_layout, null); 

    viewHolder.clientname= (TextView)convertView.findViewById(R.id.Client_name); 
    viewHolder.client_initial= (TextView) convertView.findViewById(R.id.client_initial); 
    viewHolder.text_contactedpaerson= (TextView)convertView.findViewById(R.id.text_contacted); 
    viewHolder.text_contacttype= (TextView)convertView.findViewById(R.id.text_contact_type); 
    viewHolder.text_createddate= (TextView)convertView.findViewById(R.id.text_Created_date); 
    viewHolder.text_requestdate= (TextView)convertView.findViewById(R.id.text_request_date); 
    viewHolder.text_productname= (TextView)convertView.findViewById(R.id.text_product); 
// viewHolder.text_status= (TextView)convertView.findViewById(R.id.text_status); 


    viewHolder.contactedpaerson= (TextView)convertView.findViewById(R.id.contacted); 
    viewHolder.contacttype= (TextView)convertView.findViewById(R.id.contact_type); 
    viewHolder.createddate= (TextView)convertView.findViewById(R.id.create_date); 
    viewHolder.requestdate= (TextView)convertView.findViewById(R.id.request_date); 
    viewHolder.productname= (TextView)convertView.findViewById(R.id.product); 
// viewHolder.status= (TextView)convertView.findViewById(R.id.status); 
    viewHolder.layout_color= (LinearLayout) convertView.findViewById(R.id.client_initial_layout); 

    convertView.setTag(viewHolder); 

    }else 
    { 
    viewHolder = (ViewHolder)convertView.getTag(); 
    } 
    viewHolder.clientname.setText(dar_List_Items.get(position).getClient_name()); 
     String temp=viewHolder.clientname.getText().toString(); 
     viewHolder.client_initial.setText(""+temp.charAt(0)); 
    viewHolder.contactedpaerson.setText(dar_List_Items.get(position).getContacted_person()); 
    viewHolder.contacttype.setText(dar_List_Items.get(position).getContact_type()); 
    viewHolder.createddate.setText(dar_List_Items.get(position).getCreated_date()); 
    viewHolder.productname.setText(dar_List_Items.get(position).getproduct_name()); 
    viewHolder.requestdate.setText(dar_List_Items.get(position).getRequest_date()); 
// viewHolder.status.setText(dar_List_Items.get(position).getStatus()); 

    if (count<4) { 
    viewHolder.layout_color.setBackgroundColor(color_array[count]); 

    } 

    else 
    count=0; 


    count++; 



    return convertView; 


} 




public static class ViewHolder 
{ 
    LinearLayout layout_color; 
    TextView clientname,client_initial,text_contactedpaerson,contactedpaerson,text_contacttype,contacttype,text_productname,productname,text_status,status,createddate,text_createddate,text_requestdate,requestdate; 
} 

} 

答えて

2

どうですか?

count = position % color_array.length(); 
switch(count) 
{ 
     case 0: 
     viewHolder.layout_color.setBackgroundColor(color_array[count]); 
     break; 

     case 1: 
     case 2: 
     case 3: 
     //handle these cases separately 
     //viewHolder.layout_color.setBackgroundColor(color_array[count]); 
     break; 

} 

各ケースを個別に処理する柔軟性があります。 countをどこで初期化しましたか?

+0

onCreate()内の初期化カウント –

+0

「カウント」はおそらく動作せず、アダプタの位置に関係しないため、コードを投稿してください。 – Shark

+0

ですが、アダプタによって位置が増加し、開始時に0になります。では、これはどのように機能しますか? –

関連する問題