[英]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.