我有一個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變量? –