如何在没有XML的情况下更改ListView背景和文本颜色

时间:2014-08-01 18:14:38

标签: java android listview android-listview colors

我创建了一个ListView,其中填充了ArrayList的元素。我没有这个ListView的XML文件,它只在Java中。鉴于此,我如何更改ListView的背景颜色以及更改ListView文本的颜色?

这是ListView的代码:

setListAdapter(new ArrayAdapter<String>(CollegeList.this, android.R.layout.simple_list_item_1, nameList));

3 个答案:

答案 0 :(得分:1)

如果要自定义列表视图的每一行,则必须使用具有自定义列表视图项的自定义适配器。然后,您可以使用“getView”方法捕获每个项目和位置以更改颜色。

以下是一个示例:

public class ListViewAdapter extends ArrayAdapter<Item> {

    private Context context;
    private int itemResourceId;
    private ArrayList<Item> items;

    public ListViewAdapter(Context context, int layoutId, ArrayList<Item> items) {
        super(context, layoutId, items);

        this.context = context;
        this.itemResourceId = layoutId;
        this.items = items;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {

        ViewHolder holder = null;
        if (view == null) {
            holder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(itemResourceId, null);
            holder.listItem = (TextView) view.findViewById(R.id.item);
            view.setTag(holder);
        }   
        else
            holder = (ViewHolder) view.getTag();

        if (position % 2 == 0) 
            view.setBackgroundColor(context.getResources().getColor(R.color.listItemEven));
        else
            view.setBackgroundColor(context.getResources().getColor(R.color.listItemOdd));

        Item item = items.get(position);
        holder.listItem.setText((position+1) + ". " + item.sTitle);

        return view;
    }

    static class ViewHolder {
        TextView listItem;
    }

}

答案 1 :(得分:0)

android.R.layout.simple_list_item_1

您必须向ArrayAdapter添加一个额外的参数,这将是您自己的CUSTOM XML,下一个将是自定义布局中的textview,这样数组适配器将知道要填充的布局和哪个textview需要显示您想要显示的数据。

从那个xml

你可以修改背景和颜色。会看起来像这样:

setListAdapter(new ArrayAdapter<String>(CollegeList.this, R.layout.your_custom_layout, R.id.the-text-view-in-that-layout, nameList));

答案 2 :(得分:0)

您可以获取simple_list_item_1 here的xml。您可以将其复制到项目中并进行修改,只需将列表视图的代码更改为setListAdapter(new ArrayAdapter<String>(CollegeList.this, R.layout.simple_list_item_1, nameList));您也可以自己创建一个,因为simple_list_item_1只是一个textview。只需确保ID为android:id="@android:id/text1",否则无法使用默认适配器。