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++;
このことは、正常に動作しますが使用されるが、一つの問題、色の変化をスクロール上のリストビューすなわちと共通の問題があります。カウントはアダプタからの位置に関係していないので、私はこの問題を解決する方法を理解できません。ここで
を実施しているもののスクリーンショットで完全なアダプターのコードのようなものについて
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;
}
}
onCreate()内の初期化カウント –
「カウント」はおそらく動作せず、アダプタの位置に関係しないため、コードを投稿してください。 – Shark
ですが、アダプタによって位置が増加し、開始時に0になります。では、これはどのように機能しますか? –