تغییر رنگ پس زمینه item های یک ListView به صورت ترتیبی از چند رنگ (مثلا تکرار 4 رنگ)، در برنامه نویسی اندروید
فرض کنید بخواهیم رنگ پس زمینه item های یک ListView را به صورت ترتیبی از چند رنگ (مثلا تکرار 4 رنگ) تعیین کنیم :
برای این منظور، در Activity حاوی ListView ، ابتدا متغیرهای زیر را تعریف می کنیم :
public String[] myColors = {"#0000FF" , "#66FF33", "#FF3333", "#FFFF33"};
public int myNumber = 0;
public int numberOfColors = myColors.length;
public int myNumber = 0;
public int numberOfColors = myColors.length;
دقت شود که کد رنگ های مورد نظرمان را در آرایه ای (Array) با نام myColors و از جنس رشته (String) تعریف کرده ایم. چنانچه رنگ های دیگری مد نظرتان است یا قصد دارید که تعداد رنگ ها را متفاوت انتخاب کنید، باید این آرایه را تغییر بدهید.
سپس باید به سراغ کدهای adapter به کار رفته برای ساخت item های ListView برویم. مثلا فرض کنید که adapter زیر را برای یک ListView به کار برده ایم :
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_item, parent, false);
// some codes
return row;
}
}
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_item, parent, false);
// some codes
return row;
}
}
کدهای زیر را باید به آن اضافه کنیم :
row.setBackgroundColor(Color.parseColor(myColors[myNumber]));
if(myNumber==numberOfColors-1){
myNumber = 0;
}else{
myNumber = myNumber + 1;
}
if(myNumber==numberOfColors-1){
myNumber = 0;
}else{
myNumber = myNumber + 1;
}
بنابراین کدهای adapter به صورت زیر در می آید :
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_item, parent, false);
row.setBackgroundColor(Color.parseColor(myColors[myNumber]));
if(myNumber==numberOfColors-1){
myNumber = 0;
}else{
myNumber = myNumber + 1;
}
// some codes
return row;
}
}
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list_item, parent, false);
row.setBackgroundColor(Color.parseColor(myColors[myNumber]));
if(myNumber==numberOfColors-1){
myNumber = 0;
}else{
myNumber = myNumber + 1;
}
// some codes
return row;
}
}
با تغییر پروژه اندرویدی که در یک کلید دیگر (