ListView Альтернативные цвета
Мне нужно сделать ListView с альтернативным цветом.
код:
public View getView(int position, View convertView, ViewGroup parent) {
if(position %2==0)
{
view.setBackgroundColor(Color.BLUE);
}
return view;
}
но я не знаю, как использовать его в моем адаптере:
SimpleAdapter adapter = new SimpleAdapter(this, propositions, android.R.layout.simple_list_item_2,
new String[] {"Date", "Trajet"},
new int[] { android.R.id.text1,
android.R.id.text2});
lvTrajets.setAdapter(adapter);
Может кто-нибудь помочь мне, как это сделать, пожалуйста?
4 ответа
Решение
Override getView
для адаптера
SimpleAdapter adapter = new SimpleAdapter(this, propositions, android.R.layout.simple_list_item_2,
new String[] {"Date", "Trajet"},
new int[] { android.R.id.text1,
android.R.id.text2})
{
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
View v = super.getView(position, convertView, parent);
if(position %2==0)
{
v.setBackgroundColor(Color.BLUE);
}
else
{
v.setBackgroundColor(Color.WHITE);
}
return v;
}
};
Для отображения альтернативных цветов в ListView
Реализуйте свой getView()
метод Adapter
следующим образом
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
//Initialize the convertView and all its view's
}
if(position %2==0)
{
view.setBackgroundColor(Color.BLUE);
}else{
view.setBackgroundColor(Color.Red);
}
return view;
}
call from your activity :
ListAdapteradapter = new ListAdapter(this, fillMaps, R.layout.listmain, from, to);
ListAdapter class:
public class ListAdapter extends SimpleAdapter {
public ListAdapter(Context context, List<? extends Map<String, ?>> data,int resource, String[] from, int[] to)
{
super(context, data, resource, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = super.getView(position, convertView, parent);
if (position % 2 == 1)
{
view.setBackgroundResource(R.color.blue);
}
else {
view.setBackgroundResource(R.color.lavendar);
}
return view;
}
}
Это мое представление, я меняю один фон изображения, вы просто меняете цвет родительского макета для конкретной позиции из вашей логики, если (позиция%2==0) проста, здесь я даю трюк только для этого парня, а не для полного кода.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.devicesnameshow_item, null);
}
ImageView imgIcon = (ImageView) v.findViewById(R.id.deviceimage);
Resources res = v.getResources();
String mDrawableName = data[position].umt;
int resID = res.getIdentifier(mDrawableName , "drawable", context.getPackageName());
Drawable drawable = res.getDrawable(resID);
imgIcon.setImageDrawable(drawable);
if(position %2==0)
{
imgIcon.setBackgroundColor(Color.parseColor(colorcounter_array[colorcounter]));// u can give any color i just take it from my array
} else {
imgIcon.setBackgroundColor(Color.parseColor(colorcounter_array[colorcounter]));// u can give any color i just take it from my array
}
}
return v;
}