0

我已经 Listview 使用 BaseAdapter. 目前我的 Listview 中有 4 行。我在行中有一些Textviews和一个Button。目前我的按钮颜色是默认的灰色。我想做以下事情:

  1. 当我单击第一行上的按钮时,我想将按钮的颜色更改为黑色。
  2. 当我单击第二行时,我希望第一行中的按钮变回灰色并将第二行中按钮的颜色更改为黑色。

简而言之,我只希望一个按钮在单击时具有黑色。我已经完成了以下代码,但遇到了以下问题。

  1. 如果我单击第一行按钮,第三行按钮将变为黑色。
  2. 如果我单击第二行按钮,它会变成黑色,但之前单击的按钮不会恢复到原来的颜色。

我正在发布我的代码,请逐步指导我,因为我对此很陌生。

我的联系人临时文件

public class contactstemp extends Fragment {
 public ArrayList<ProductModel> _productlist = new ArrayList<ProductModel>();
    @Override
     public View onCreateView(final LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
     final View view = inflater.inflate(R.layout.viewrecord, container,
            false);
          return view;
}
    private class ListAdapter extends BaseAdapter {
    LayoutInflater inflater;
    ViewHolder viewHolder;

    public ListAdapter(Context context) {
        // TODO Auto-generated constructor stub
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return _productlist.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return _productlist.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.listview_row, null);
            viewHolder = new ViewHolder();
            viewHolder.txt_pname = (TextView) convertView
            .findViewById(R.id.txtdisplaypname);
    viewHolder.txt_pprice = (TextView) convertView
            .findViewById(R.id.txtdisplaypprice);

    viewHolder.txtidno = (TextView) convertView
            .findViewById(R.id.txtdisplaypid);
    viewHolder.buttons = (Button) convertView
    .findViewById(R.id.btn_update);
    convertView.setTag(viewHolder);


        }
        else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.txt_pname.setText(_productlist.get(position)
                .getProductname().trim());
        viewHolder.txt_pprice.setText(_productlist.get(position)
                .getProductprice().trim());

        viewHolder.txtidno.setText(_productlist.get(position).getIdno()
                .trim());
        viewHolder.buttons.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                viewHolder.buttons.setBackgroundColor(Color.BLACK);
            }
        });
        return  convertView;
    }
4

1 回答 1

1

您可以利用列表视图中的单项选择模式(请参阅setChoiceMode())。

为按钮创建一个新的背景可绘制对象,并将选定状态设置为黑色。然后将您的按钮设置为 android:duplicateParentState="true",以便它从列表项中获取选择。

于 2014-05-15T00:39:50.447 回答