我已经 Listview
使用 BaseAdapter
. 目前我的 Listview 中有 4 行。我在行中有一些Textviews和一个Button。目前我的按钮颜色是默认的灰色。我想做以下事情:
- 当我单击第一行上的按钮时,我想将按钮的颜色更改为黑色。
- 当我单击第二行时,我希望第一行中的按钮变回灰色并将第二行中按钮的颜色更改为黑色。
简而言之,我只希望一个按钮在单击时具有黑色。我已经完成了以下代码,但遇到了以下问题。
- 如果我单击第一行按钮,第三行按钮将变为黑色。
- 如果我单击第二行按钮,它会变成黑色,但之前单击的按钮不会恢复到原来的颜色。
我正在发布我的代码,请逐步指导我,因为我对此很陌生。
我的联系人临时文件
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;
}