我创建了一个ListView,其中填充了ArrayList的元素。我没有这个ListView的XML文件,它只在Java中。鉴于此,我如何更改ListView的背景颜色以及更改ListView文本的颜色?
这是ListView的代码:
setListAdapter(new ArrayAdapter<String>(CollegeList.this, android.R.layout.simple_list_item_1, nameList));
答案 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"
,否则无法使用默认适配器。