listview更改选择的行颜色

时间:2015-01-06 10:01:58

标签: android listview baseadapter

我有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

1 个答案:

答案 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;


                }
            });