私はアイテムを保持しているlistViewを持っていて、アイテムの1つが強調表示されています。android adapter listview、行への変更
アイテムをクリックすると、強調表示されたカードが強調表示されなくなり、新しいアイテムがハイライト表示されます。
私がこれまで行ってきたこと。
リストを使用してアダプタを呼び出し、リスト内の項目の1つが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;
}
貼り付けコードを試してみてください。 –
okay編集済みの質問 –
ここで、currentDefaultItem変数はありますか? –