Witam,
Otóż ma pewien problem. Mam listę kart. Podaną kartę zaznaczam. Karta zaznacza mi na odpowiedni kolor. Zapisuje numer zaznaczonej pozycji do SharedPreferences. Następnie przez konstruktor odczytuje zaznaczoną pozycję. Problem mam taki, że za bardzo nie wiem jak zaznaczyć podaną pozycję karty.
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {
private int lastCheckedPos = 0;
private int position;
private Context mContext;
private List<Card> cardsList = new ArrayList<>();
private MySharepreference mySharepreference;
private ItemClickListener clickListener;
public void setClickListener(ItemClickListener clickListener) {
this.clickListener = clickListener;
}
public CardAdapter(Context mContext, ArrayList<Card> cardsList, String key, int position) {
this.key = key;
this.mContext = mContext;
this.cardsList = cardsList;
this.position = position;
notifyDataSetChanged();
}
@Override
public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_card, parent, false);
return new CardViewHolder(view);
}
@Override
public void onBindViewHolder(CardViewHolder holder, final int position) {
final Card card = cardsList.get(position);
databaseHandler = new CardDatabaseHandler(mContext);
mySharepreference = new MySharepreference();
try {
nameDecrypt = AesCrypt.decrypt(key, card.getNameCard());
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
try {
setDateDecrypt = AesCrypt.decrypt(key, card.getCreateDate());
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
try {
expirationDateDecrypt = AesCrypt.decrypt(key, card.getExpirationDate());
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
dataString = generateData(expirationDateDecrypt);
holder.nameCard.setText(nameDecrypt);
holder.setCurrentDateText.setText(setDateDecrypt);
holder.setExpirationDateText.setText(dataString);
if (lastCheckedPos == position) {
mySharepreference.saveNumberCard(mContext, card.getId());
mySharepreference.savePosition(mContext, position);
holder.cardView.setBackgroundResource(R.drawable.bordercardview);
holder.menu.setOnClickListener(new View.OnClickListener() {
Typeface custom_fonts = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Regular.ttf");
Typeface custom_fonts_Bold = Typeface.createFromAsset(mContext.getAssets(), "fonts/OpenSans-Bold.ttf");
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, v);
popupMenu.inflate(R.menu.cardmenudefault);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.editCardD:
break;
case R.id.deleteCardD:
break;
case R.id.informationD:
break;
}
return false;
}
});
popupMenu.show();
}
});
} else {
holder.cardView.setBackgroundResource(R.drawable.bordercardviewwhite);
holder.menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, v);
popupMenu.inflate(R.menu.cardmenu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.editCard:
break;
case R.id.deleteCard:
break;
case R.id.informationAboutCard:
}
return false;
}
});
popupMenu.show();
}
});
}
}
@Override
public int getItemCount() {
return cardsList.size();
}
public class CardViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
Typeface custom_fonts = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/OpenSans-Regular.ttf");
Typeface custom_fonts_bold = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/OpenSans-Bold.ttf");
private ImageView menu;
private LinearLayout cardView;
private TextView nameCard, setDateText, expirationDateText, setCurrentDateText, setExpirationDateText;
public CardViewHolder(View itemView) {
super(itemView);
nameCard = (TextView) itemView.findViewById(R.id.nameCard);
nameCard.setTypeface(custom_fonts_bold);
setDateText = (TextView) itemView.findViewById(R.id.dateText);
setDateText.setTypeface(custom_fonts);
expirationDateText = (TextView) itemView.findViewById(R.id.dateExpiration);
expirationDateText.setTypeface(custom_fonts);
setCurrentDateText = (TextView) itemView.findViewById(R.id.setCurrentDateText);
setCurrentDateText.setTypeface(custom_fonts);
setExpirationDateText = (TextView) itemView.findViewById(R.id.setDateExpirationText);
setExpirationDateText.setTypeface(custom_fonts);
menu = (ImageView) itemView.findViewById(R.id.menu);
cardView = (LinearLayout) itemView.findViewById(R.id.cardView);
cardView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
clickListener.onClick(v, getAdapterPosition());
}
}
private static String generateData(String expirationDate) {
String month, year, newDate;
month = expirationDate.substring(0, 2);
year = expirationDate.substring(3, 5);
newDate = month + "/" + "20" + year;
return newDate;
}
}