Android:ListView为每一行添加渐变

时间:2012-01-28 11:41:35

标签: android listview gradient

我想为每一行添加渐变。我试图做的是在listview标签上把这个attribut,android:background =“@ drawable / mygradient”。但我得到的是这个渐变显示在整个列表中。我想要的是为每个项目显示这个渐变。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以为列表视图提供自定义适配器,并在其getView方法中将渐变设置为背景。像这样:

public class MyAdapter extends BaseAdapter {
    List<MyDataType> myData;
    Context context;

    public MyAdaptor(Context ctx, List<MyDataType> myData) {
        this.myData = myData;
        this.context = ctx;
    }

    public int getCount() { return myData.size() };
    public Object getItem(int pos) { return myData.get(pos); }
    public long getItemId(int pos) { return 0L; }

    public View getView(int pos, View convertView, ViewGroup parent) {
        //this is where you can customise the display of an individual
        //list item by setting its background, etc, etc.

        ...

        //and return the view for the list item at the end
        return <List item view>;
    }
}

然后您可以将此适配器设置为列表的适配器:

ListView myList = <initialise it here>
myList.setAdapter(new MyAdapter(getContext(), listData);

现在,只要需要显示列表项,就会调用getView方法,您将执行所有必要的显示自定义,包括设置背景。

答案 1 :(得分:0)

而不是设置背景属性设置列表的选择器,如下所示:

机器人:listSelector = “@绘制/ list_selector_background”