我有一个自定义listView。主要布局xml是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView android:layout_height="wrap_content"
android:id="@+id/lv_clientes"
android:layout_width="0dp">
</ListView>
<!-- From this part there are not problems -->
</LinearLayout>
列表项XML就是这样
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlo_elemento"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/tv_nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<!-- From this part there are not problems -->
</RelativeLayout>
现在适配器是这样的:
public class AdapterListaClientes extends BaseAdapter
{
private Cliente[] data;
Context context;
LayoutInflater layoutInflater;
int itemSelected = -1;
public void setSelected(int valor)
{
itemSelected = valor;
}
public AdapterListaClientes(Context context, ArrayList<Cliente> data)
{
this.data = data.toArray(new Cliente[0]);
this.context = context;
layoutInflater = LayoutInflater.from(context);
}
/*Mandatory things and so...*/
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//All the things that we should put in this point.. I'm using the list14 example
//HERE IS THE POLEMIC CODE
if(position == itemSelected)
convertView.setBackgroundColor(R.color.rojo);
else
convertView.setBackgroundColor(R.color.blanco);
return convertView;
} }
setBackgroundColor()方法不起作用。我知道这样做是因为当我使用此方法时,按下列表视图项时,按下的项目的背景颜色将更改为默认颜色的不透明版本。
这个问题只发生在背景颜色,我可以改变其他一切没有问题...
谢谢!
使用
setBackgroundResource(R.color.rojo);
R.color.rojo是一种资源,它不是颜色..
您也可以使用setBackgroundColor(),但您需要了解期望对象不是资源ID。所以你必须将资源转换为颜色对象,如下所示:
setBackgroundColor(getResources().getColor(R.color.rojo));
要通过setBackgroundColor方法设置颜色,请执行以下操作: -
setBackgroundColor(Color.parseColor("#e7eecc"));
或者通过
setBackgroundResource(R.color.<Your-Color>)
.setBackgroundColor(getResources().getColor(R.color.raj));