我有listview。我想在用户点击一行时更改行颜色。但是如果他选择第二行,那么第一行应该是不同的。说我有3排,他点击第2个,然后第2个世界变成红色和其他白色。如果再次单击不同的位置然后该shld更新我已实现自定义基本适配器
<ListView
android:id="@+id/productlist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:choiceMode="singleChoice" >
</ListView>
碱
private class Listadapter extends BaseAdapter
{
TextView product = null;
TextView device = null;
Button save;
@Override
public int getCount()
{
return names.size();
}
@Override
public Object getItem(int position)
{
return null;
}
@Override
public long getItemId(int position)
{
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View v;
if (convertView == null)
{
v = getLayoutInflater().inflate(R.layout.productdialog, null);
} else
{
v = convertView;
}
product = (TextView) v.findViewById(R.id.title);
device = (TextView) v.findViewById(R.id.device);
save = (Button) v.findViewById(R.id.button_save);
product.setTag(position);
String[] listarr = names.get(position).split(" - ");
product.setText(listarr[0]);
device.setText(listarr[1]);
/*v.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// v.setBackgroundColor(R.color.gray);
return v;
}
}
任何人都可以告诉我。我也尝试过listselecoter
答案 0 :(得分:0)
您可以将此代码用于您的要求
int save = -1;
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
parent.getChildAt(position).setBackgroundColor(
Color.parseColor("#A9BCF5"));
if (save != -1 && save != position) {
parent.getChildAt(save).setBackgroundColor(
Color.parseColor("#d6e6ff"));
}
save = position;
}
});