我有一个listView控股项目,其中一个项目突出显示。安卓适配器列表视图,更改为一行
当他们点击一个项目时,我想突出显示的卡片不再被突出显示,并且新项目被突出显示。
我到目前为止做了什么。
我用列表调用适配器,列表中的其中一个项目是defaultItem,它是true或false。
getView被调用的时候,我有一个if defaultItem,并且我对这个项目的UI进行了改变。我还将该项保存在名为currentDefaultItem的类变量中。
现在,当他们点击我能够改变列表,使旧的高亮显示的项目为false,并单击项目为true。然后我调用notifyDataSetChanged();然而,这似乎并不奏效。
展会getView
@Override
public View getView(final int position, View v, ViewGroup parent) {
ViewHolder holder;
Card card = getItem(position);
if (v == null) {
v = mInflater.inflate(R.layout.row_cards, parent, false);
holder = new ViewHolder();
holder.tvName = (TextView) v.findViewById(R.id.tvName);
holder.tvBrand = (TextView) v.findViewById(R.id.tvBrand);
holder.tvLastFour = (TextView) v.findViewById(R.id.tvLastFour);
holder.tvCounter = (TextView) v.findViewById(R.id.tvCounter);
holder.tvCard = (ImageView) v.findViewById(R.id.tvCard);
holder.arrow = (ImageView) v.findViewById(R.id.arrow);
holder.tick = (ImageView) v.findViewById(R.id.tick);
if (card.getDefaultcard().intValue()==(1)){
holder.tick.setVisibility(View.VISIBLE);
positionOfDefault=position;
}
String brand = card.getBrand();
switch (brand.toLowerCase()){
case "visa":
holder.tvCard.setImageResource(R.drawable.visa2);
break;
case "mastercard":
holder.tvCard.setImageResource(R.drawable.mastercardx2);
break;
case "diners":
holder.tvCard.setImageResource(R.drawable.dinersclub2);
break;
case "amex":
holder.tvCard.setImageResource(R.drawable.americanexpress2);
break;
case "jcb":
holder.tvCard.setImageResource(R.drawable.jcg2);
break;
case "discover":
holder.tvCard.setImageResource(R.drawable.discover);
break;
}
holder.b_delete_in_list = (Button) v.findViewById(R.id.b_delete_in_list);
holder.b_delete_in_list.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
deleteCard(position);
}
});
holder.b_set_default = (Button) v.findViewById(R.id.b_set_default);
holder.b_set_default.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
updatePaymentMethod(position);
}
});
//
v.setTag(holder);
//
} else {
holder = (ViewHolder) v.getTag();
}
holder.tvName.setText(cardList.get(position).getName().toUpperCase());
holder.tvBrand.setText(cardList.get(position).getBrand().toUpperCase());
holder.tvLastFour.setText(cardList.get(position).getLast_four_digits());
return v;
}
粘贴代码。 –
好的编辑问题 –
其中是currentDefaultItem变量? –