我使用Listview
生成了BaseAdapter
。目前我的Listview中有4行。我在行中有一些Textviews和一个按钮。目前我的按钮的颜色是默认的灰色。我想做以下事情:
简而言之,我想只需要一个按钮,一次点击就会出现黑色。我已经完成了以下代码,但是我遇到了以下问题。
我发布了我的代码,请一步一步指导我,因为我对此很陌生。
mycontactstemp.java
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;
}
答案 0 :(得分:1)
您可以利用列表视图中的单项选择模式(请参阅setChoiceMode())。
为按钮创建新的可绘制背景,并将所选状态设置为黑色。然后将您的按钮设置为android:duplicateParentState =“true”,以便从列表项中获取选择。