Ustaw dzielnik na wysokość na 0 i zaimplementuj Widok w układzie przedmiotu o wysokości 1 i zmieniaj jego kolor na podstawie elementu listy za każdym razem, gdy widok jest zbudowany.
Oto przykładowy układ XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<View
android:id="@+id/divider"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#FFFFFFFF" />
</LinearLayout>
A to, w jaki sposób zmienić kolor w adapterze:
public class MyAdapter extends BaseAdapter {
/** List of items to show */
private ArrayList<String> items = new ArrayList<String>();
private Context context;
private int color[];
public OffersAdapter(Context c, ArrayList<String> items, int color[])
{
super();
this.context = c;
this.items = items;
this.color = color;
}
public int getCount() {
return items.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if(null == convertView)
{
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.list_item, parent, false);
viewHolder.text = (TextView) convertView.findViewById(R.id.text);
viewHolder.divider = (View) convertView.findViewById(R.id.divider);
convertView.setTag(viewHolder);
} else {
//Retrieve the current view
viewHolder = (ViewHolder) convertView.getTag();
}
//This is where you chance the divider color based on the item
viewHolder.divider.setBackgroundColor(color[position]);
viewHolder.text.setText(items.get(position));
return convertView;
}
//Holds the current view
private static class ViewHolder {
public TextView text;
public View divider;
}
}
Gdzie int color[]
jest lista kolorów, które chcesz użyć.
Więcej o ViewHolder read here.
Próbujesz naprzemiennych barwach, lub zdefiniować różne kolorowe przekładki z różne punkty? – nickhar
Próbuję zdefiniować różne kolory rozdzielacza dla różnych elementów w zależności od zawartości. Próbuję zrobić to programowo, kiedy tworzę listę, ale kiedy definiuję inny kolor, zmienia on wszystkie dzielniki na ten kolor, a nie tylko dzielnik konkretnego elementu, który chciałem zmienić. – MrBug