如何为List的每个成员显示一个Dialog?

时间:2014-04-11 08:41:04

标签: android list arraylist dialog

我有一张卡片清单(卡片有问答)

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();
}

1 个答案:

答案 0 :(得分:0)

您正在遍历所有卡片,设置文本,然后立即转到下一张卡片。您需要向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();
  }
}