Java 在回收器视图中添加和显示数据
我有个问题,所以我有个问题 在扫描活动中,二维码被扫描并生成卡片数据,然后当值匹配时,我们进入下一个活动,在那里我们会看到下一个值。单击“下一步”按钮并转到我们的数据列表。询问如何从ScanActivity.class活动卡获取数据并添加列表 ScanActivity.java中的一段代码Java 在回收器视图中添加和显示数据,java,android,android-recyclerview,cardview,Java,Android,Android Recyclerview,Cardview,我有个问题,所以我有个问题 在扫描活动中,二维码被扫描并生成卡片数据,然后当值匹配时,我们进入下一个活动,在那里我们会看到下一个值。单击“下一步”按钮并转到我们的数据列表。询问如何从ScanActivity.class活动卡获取数据并添加列表 ScanActivity.java中的一段代码 if (!p.matcher(decodedBarcodeValue).matches()) { showAlterDialog("Błędny QR
if (!p.matcher(decodedBarcodeValue).matches()) {
showAlterDialog("Błędny QR Kod", "Podany kod QR code jest błędny. Zeskanuj go ponownie.");
} else {
Matcher m = p.matcher(decodedBarcodeValue);
while (m.find()) {
daneKarty[index] = m.group(1);
index++;
}
if (daneKarty.length < 6) {
showAlterDialog("Błędny QR Kod", "Podany Kod jest nieprawidłowy");
}
sciezka3 = daneKarty[0];
base32 = daneKarty[1];
nameCard = daneKarty[2];
intervalTotp = daneKarty[3];
passwordHotp = daneKarty[4];
expirationDate = daneKarty[5];
if (intervalTotp.equals("")) {
intervalTotp = "60";
}
try {
OTP = generateOTP(base32, uuidDevice);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Base32 code = new Base32();
byte secret[] = code.decode(OTP);
try {
hotpValue = Hotp.generateHotp(secret, hotp_counter, 6);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}
if (hotpValue.equals(passwordHotp)) {
Intent intent = new Intent(ScanQrCodeActivity.this, Stage3Activity.class);
intent.putExtra(EXTRA_MESSAGE, hotpValue);
startActivityForResult(intent, REQUEST_CODE);
} else {
showAlterDialog("Błędny QR Kod", "Podany Kod jest nieprawidłowy");
}
主课
public class MainActivity extends AppCompatActivity {
public List<Card> cardList = new ArrayList<>();
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
}
private RecyclerView cardRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Typeface custom_fonts = Typeface.createFromAsset(getAssets(), "fonts/OpenSans-Regular.ttf");
cardRecyclerView = (RecyclerView) findViewById(R.id.cardViewRecycleView);
mLayoutManager = new LinearLayoutManager(this);
cardRecyclerView.setLayoutManager(mLayoutManager);
// title application
TextView title_app = (TextView) findViewById(R.id.toolbar_title);
title_app.setTypeface(custom_fonts);
}
CardAdapter.class
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {
private List<Card> cardsList = new ArrayList<>();
private Card card;
public CardAdapter( List<Card> cardsList) {
this.cardsList = cardsList;
}
//dodaj obiekt do listy
private void addItem(int position, Card card) {
cardsList.add(position, card);
notifyItemChanged(position);
}
public class CardViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public CardView cardview;
public TextView nameCard, dateText, setDateText, dateExpirationText, setDateExpirationText;
public ImageView mImageButton;
Typeface custom_fonts = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/OpenSans-Regular.ttf");
public CardViewHolder(View itemView) {
super(itemView);
// name Card
nameCard = (TextView) itemView.findViewById(R.id.nameCard);
nameCard.setTypeface(custom_fonts);
//data add Card
setDateText = (TextView) itemView.findViewById(R.id.setDateText);
setDateText.setTypeface(custom_fonts);
dateText = (TextView) itemView.findViewById(R.id.dateText);
dateText.setTypeface(custom_fonts);
mImageButton = (ImageView) itemView.findViewById(R.id.garbageDelete);
//data expiration date
dateExpirationText = (TextView) itemView.findViewById(R.id.dateExpiration);
dateExpirationText.setTypeface(custom_fonts);
//
setDateExpirationText = (TextView) itemView.findViewById(R.id.setDateExpirationText);
setDateExpirationText.setTypeface(custom_fonts);
cardview = (CardView) itemView.findViewById(R.id.cardView);
cardview.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Context context = itemView.getContext();
Intent intent = new Intent(context, CardDetailsActivity.class);
context.startActivity(intent);
}
}
@Override
public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.
from(parent.getContext()).
inflate(R.layout.item_cardview, parent, false);
return new CardViewHolder(itemView);
}
@Override
public void onBindViewHolder(final CardViewHolder holder, final int position) {
Card Card = cardsList.get(position);
holder.nameCard.setText(Card.getNameCard());
holder.dateText.setText(R.string.data_dodania);
holder.setDateText.setText(Card.getDateCard());
holder.mImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu(holder.mImageButton, position);
}
});
}
公共类CardAdapter扩展了RecyclerView.Adapter{
private List cardsList=new ArrayList();
私人卡;
公共卡适配器(列表卡列表){
this.cardsList=cardsList;
}
//多达吉·奥比克特精神萎靡
专用无效附加项(内部位置,卡片){
卡片列表。添加(位置、卡片);
(职位)变更;
}
公共类CardViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
公共卡视图卡视图;
公共文本查看名片、日期文本、setDateText、dateExpirationText、setDateExpirationText;
公共图像查看mImageButton;
Typeface custom_fonts=Typeface.createFromAsset(itemView.getContext().getAssets(),“fonts/OpenSans Regular.ttf”);
公共名片夹(查看项目视图){
超级(项目视图);
//名片
nameCard=(TextView)itemView.findViewById(R.id.nameCard);
设置字体(自定义字体);
//数据添加卡
setDateText=(TextView)itemView.findViewById(R.id.setDateText);
setDateText.setTypeface(自定义字体);
dateText=(TextView)itemView.findViewById(R.id.dateText);
dateText.setTypeface(自定义字体);
mImageButton=(ImageView)itemView.findViewById(R.id.garbageDelete);
//数据过期日期
dateExpirationText=(TextView)itemView.findViewById(R.id.dateExpiration);
dateExpirationText.setTypeface(自定义字体);
//
setDateExpirationText=(TextView)itemView.findViewById(R.id.setDateExpirationText);
setDateExpirationText.setTypeface(自定义字体);
cardview=(cardview)itemView.findViewById(R.id.cardview);
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
Context=itemView.getContext();
意向意向=新意向(上下文、CardDetailsActivity.class);
背景。开始触觉(意图);
}
}
@凌驾
公共卡ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图项视图=布局调整器。
来自(parent.getContext())。
充气(R.layout.item_cardview,父项,假);
返回新的CardViewHolder(itemView);
}
@凌驾
BindViewHolder上的公共无效(最终CardViewHolder,最终int位置){
卡片=卡片列表获取(位置);
holder.nameCard.setText(Card.getNameCard());
holder.dateText.setText(R.string.data_dodania);
holder.setDateText.setText(Card.getDateCard());
holder.mImageButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
showPopupMenu(holder.mImageButton,位置);
}
});
}
如果我理解正确,并且您只需要在
活动之间传递数据
,就可以使用捆绑包
完成
在这里,您回答了相同的问题:
有关更复杂的数据,请查看此处:在类ScanActivity.class上拉出卡数据名片、过期日期、保存任务列表和显示列表您必须在
开始活动之前将卡数据添加到意图
的捆绑包
。阅读链接,我不是为您这样做的。将位置作为调用活动并在setResult返回时,使用该位置通知适配器
public class Card {
private String nameCard;
private String dateCard;
private String dateExpiration;
public Card(String nameCard, String dateCard, String dateExpiration) {
this.nameCard = nameCard;
this.dateCard = dateCard;
this.dateExpiration = dateExpiration;
}
public String getNameCard() {
return nameCard;
}
public void setNameCard(String nameCard) {
this.nameCard = nameCard;
}
public String getDateCard() {
return dateCard;
}
public void setDateCard(String dateCard) {
this.dateCard = dateCard;
}
public String getDateExpiration() {
return dateExpiration;
}
public void setDateExpiration(String dateExpiration) {
this.dateExpiration = dateExpiration;
}
}
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CardViewHolder> {
private List<Card> cardsList = new ArrayList<>();
private Card card;
public CardAdapter( List<Card> cardsList) {
this.cardsList = cardsList;
}
//dodaj obiekt do listy
private void addItem(int position, Card card) {
cardsList.add(position, card);
notifyItemChanged(position);
}
public class CardViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public CardView cardview;
public TextView nameCard, dateText, setDateText, dateExpirationText, setDateExpirationText;
public ImageView mImageButton;
Typeface custom_fonts = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/OpenSans-Regular.ttf");
public CardViewHolder(View itemView) {
super(itemView);
// name Card
nameCard = (TextView) itemView.findViewById(R.id.nameCard);
nameCard.setTypeface(custom_fonts);
//data add Card
setDateText = (TextView) itemView.findViewById(R.id.setDateText);
setDateText.setTypeface(custom_fonts);
dateText = (TextView) itemView.findViewById(R.id.dateText);
dateText.setTypeface(custom_fonts);
mImageButton = (ImageView) itemView.findViewById(R.id.garbageDelete);
//data expiration date
dateExpirationText = (TextView) itemView.findViewById(R.id.dateExpiration);
dateExpirationText.setTypeface(custom_fonts);
//
setDateExpirationText = (TextView) itemView.findViewById(R.id.setDateExpirationText);
setDateExpirationText.setTypeface(custom_fonts);
cardview = (CardView) itemView.findViewById(R.id.cardView);
cardview.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Context context = itemView.getContext();
Intent intent = new Intent(context, CardDetailsActivity.class);
context.startActivity(intent);
}
}
@Override
public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.
from(parent.getContext()).
inflate(R.layout.item_cardview, parent, false);
return new CardViewHolder(itemView);
}
@Override
public void onBindViewHolder(final CardViewHolder holder, final int position) {
Card Card = cardsList.get(position);
holder.nameCard.setText(Card.getNameCard());
holder.dateText.setText(R.string.data_dodania);
holder.setDateText.setText(Card.getDateCard());
holder.mImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu(holder.mImageButton, position);
}
});
}