我想在列表元素之间有一个包含不同分隔符的列表.
我用这段代码定义了一个高度为1的白色分隔符:
我用这段代码定义了一个高度为1的白色分隔符:
_listView.setDivider(new ColorDrawable(Color.WHITE)); _listView.setDividerHeight(1);
然而,它将所有元素的分隔符设置为白色,我想只有一些是白色而另一个是不同的颜色.
我怎样才能做到这一点?
解决方法
将分隔符设置为高度为0,并在项目布局中实现高度为1的视图,并在每次构建视图时根据列表项更改其颜色.
这是一个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>
这就是你改变适配器颜色的方法:
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; } }
其中int color []是您要使用的颜色列表.
更多关于ViewHolder read here.