簡體   English   中英

如何為列表的每個成員顯示對話框?

[英]How show a Dialog for each member of a List?

我有一張卡片清單(卡片有問題和答案)

List<Card> cards = db.getAnswerableCards(userid);

如何顯示每個卡會員的對話框?

我用下面的代碼,但它只適用於最后一張卡片

final Dialog dialogtypeanswer = new Dialog(this, R.style.dialogcatedit);
List<Card> cards = db.getAnswerableCards(userid);
TextView question = (TextView) dialogtypeanswer.findViewById(R.id.textView1);
final EditText answer = (EditText) dialogtypeanswer.findViewById(R.id.editText1);
Button compare = (Button) dialogtypeanswer.findViewById(R.id.button1);
dialogtypeanswer.show();

 for (final Card card : cards) {
     question.setText(card.getQuestion());
     compare.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
      if(card.getAnswer().equals(answer.getText())){
        db.updateCardState(card.getId(),userid,b.getStateofCard(userid,card.getId())+1);
     }else{
        db.updateCardState(card.getId(), userid, 0);
     }
   }
  });
 }
dialogtypeanswer.dismiss();
}

您要遍歷所有卡,設置文本,然后立即轉到下一張卡。 您需要向OnClickListener添加代碼,以等待用戶完成操作,然后再前進到下一張卡片。

編輯:一些示例代碼(免責聲明:我沒有對此進行測試)。

首先獲取列表迭代器,然后調用該方法以顯示第一張卡片:

ListIterator<Card> iterator = cards.listIterator();
Card card = iterator.next();
showCard(card); // this will contain all your dialog logic

在onClickListener中,推進迭代器並顯示帶有下一張卡片的對話框:

new OnClickListener() {
  @Override
  public void onClick(View v) {
    if(card.getAnswer().equals(answer.getText())){
      db.updateCardState(card.getId(),userid,b.getStateofCard(userid,card.getId())+1);
    }else{
      db.updateCardState(card.getId(), userid, 0);
    }
    if (iterator.hasNext()) {
      Card c = iterator.next();
      showCard(c);
    }
    dialog.dismiss();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM