public class ClientGame extends Activity implements OnClickListener{
Button Answer1, Answer2, Answer3, Answer4;
TextView txtQuest;
DatabaseHelper dbHelper;
Cursor cur;
String qid;
String[] _ids = {};
ArrayList<String> idList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clientgame);
dbHelper = new DatabaseHelper(this);
cur = dbHelper.getRandomQuestion();
startManagingCursor(cur);
qid = cur.getString(cur.getColumnIndex(DatabaseHelper.colID));
idList = new ArrayList<String>();
idList.add(qid); // i take the current id
try
{
Intent extras = getIntent();
String ID = extras.getStringExtra("_id");
idList.add(ID); // add the previous one
_ids = (String[]) idList.toArray(new String[0]);
score = (TextView)findViewById(R.id.textView2);
score.setText("Your score is " + idList);
}
catch(Exception e)
{
}
Answer1 = (Button) findViewById(R.id.button1);
Answer1.setText(answer1);
Answer1.setOnClickListener(this);
Answer2 = (Button) findViewById(R.id.button2);
Answer2.setText(answer2);
Answer2.setOnClickListener(this);
Answer3 = (Button) findViewById(R.id.button3);
Answer3.setText(answer3);
Answer3.setOnClickListener(this);
Answer4 = (Button) findViewById(R.id.button4);
Answer4.setText(answer4);
Answer4.setOnClickListener(this);
}
@Override
public void onPause() {
super.onPause();
finish(); }
@Override
public void onClick(View view) { //correct answer check and store skore and id
if (view == findViewById(R.id.button1))
{
int i = 1;
String ID = cur.getString(cur.getColumnIndex("_id"));
Intent ini = new Intent(ClientGame.this, ClientGame.class);
ini.putExtra("_id", ID);
startActivity(ini);
}
if (view == findViewById(R.id.button2))
{
int i = 1;
String ID = cur.getString(cur.getColumnIndex("_id"));
Intent ini = new Intent(ClientGame.this, ClientGame.class);
ini.putExtra("_id", ID);
startActivity(ini);
}
if (view == findViewById(R.id.button3))
{
int i = 1;
String ID = cur.getString(cur.getColumnIndex("_id"));
Intent ini = new Intent(ClientGame.this, ClientGame.class);
ini.putExtra("_id", ID);
startActivity(ini);
}
if (view == findViewById(R.id.button4))
{
int i = 1;
String ID = cur.getString(cur.getColumnIndex("_id"));
Intent ini = new Intent(ClientGame.this, ClientGame.class);
ini.putExtra("_id", ID);
startActivity(ini);
}
}
} 这里的问题是在 textview 上只显示两个 id。最后一个和当前。我想尽可能地显示用户想要的所有 ID。当然不是无限的。那么我如何创建一个数组列表,假设有十个值,并且每次都存储 id?
最佳答案
您只在列表中添加了两个 ID,因此行为是正确的。如果你的 Activity 被创建了多次并且你想使用上次添加的值,那么必须做两件事:
将列表声明为静态成员:
静态ArrayList idList;
像这样更改分配方式:
如果(idList == null){ idList = new ArrayList();
这会做你想做的。我建议不要再次启动 Activity ,只需在单击按钮时更新 TextView 中的文本。
编辑------
要更新 TextView 而不是再次启动 Activity,请执行以下操作:
score.setText(score.getText().toString() + ", " + ID)
我只是在现有文本的末尾添加了一个逗号和新 ID。当然,您可能希望以不同的方式格式化它。拥有显示的文本和新的文本应该足以获得所需的格式。
关于android - ArrayList 只存储两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10034756/