我有一张卡片清单(卡片有问答)
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();
}
答案 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();
}
}