Android ArrayList只存储两个值 public类ClientGame扩展活动实现OnClickListener{ 按钮应答1、应答2、应答3、应答4; TextView-txtQuest; 数据库助手dbHelper; 光标电流; 字符串qid; 字符串[]_id={}; 阿雷尔主义者; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.clientgame); dbHelper=新的DatabaseHelper(此); cur=dbHelper.getRandomQuestion(); 开始管理光标(cur); qid=cur.getString(cur.getColumnIndex(DatabaseHelper.colID)); idList=newarraylist(); idList.add(qid);//我获取当前id 尝试 { Intent extras=getIntent(); 字符串ID=extras.getStringExtra(“_ID”); idList.add(ID);//添加上一个 _ids=(字符串[])idList.toArray(新字符串[0]); 分数=(TextView)findViewById(R.id.textView2); score.setText(“您的分数是”+idList); } 捕获(例外e) { } Answer1=(按钮)findViewById(R.id.button1); 回答1.setText(回答1); 回答1.设置ClickListener(本); Answer2=(按钮)findViewById(R.id.button2); 回答2.setText(回答2); 回答2.setOnClickListener(本); Answer3=(按钮)findViewById(R.id.button3); 回答3.setText(回答3); 回答3.设置ClickListener(本); Answer4=(按钮)findViewById(R.id.button4); 回答4.setText(回答4); 回答4.setOnClickListener(本); } @凌驾 公共无效暂停(){ super.onPause(); finish();} @凌驾 public void onClick(View){//正确答案检查并存储skore和id 如果(视图==findViewById(R.id.button1)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } 如果(视图==findViewById(R.id.button2)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } if(视图==findViewById(R.id.button3)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } 如果(视图==findViewById(R.id.button4)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } }

Android ArrayList只存储两个值 public类ClientGame扩展活动实现OnClickListener{ 按钮应答1、应答2、应答3、应答4; TextView-txtQuest; 数据库助手dbHelper; 光标电流; 字符串qid; 字符串[]_id={}; 阿雷尔主义者; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.clientgame); dbHelper=新的DatabaseHelper(此); cur=dbHelper.getRandomQuestion(); 开始管理光标(cur); qid=cur.getString(cur.getColumnIndex(DatabaseHelper.colID)); idList=newarraylist(); idList.add(qid);//我获取当前id 尝试 { Intent extras=getIntent(); 字符串ID=extras.getStringExtra(“_ID”); idList.add(ID);//添加上一个 _ids=(字符串[])idList.toArray(新字符串[0]); 分数=(TextView)findViewById(R.id.textView2); score.setText(“您的分数是”+idList); } 捕获(例外e) { } Answer1=(按钮)findViewById(R.id.button1); 回答1.setText(回答1); 回答1.设置ClickListener(本); Answer2=(按钮)findViewById(R.id.button2); 回答2.setText(回答2); 回答2.setOnClickListener(本); Answer3=(按钮)findViewById(R.id.button3); 回答3.setText(回答3); 回答3.设置ClickListener(本); Answer4=(按钮)findViewById(R.id.button4); 回答4.setText(回答4); 回答4.setOnClickListener(本); } @凌驾 公共无效暂停(){ super.onPause(); finish();} @凌驾 public void onClick(View){//正确答案检查并存储skore和id 如果(视图==findViewById(R.id.button1)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } 如果(视图==findViewById(R.id.button2)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } if(视图==findViewById(R.id.button3)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } 如果(视图==findViewById(R.id.button4)) { int i=1; 字符串ID=cur.getString(cur.getColumnIndex(“\u ID”); Intent ini=新的Intent(ClientGame.this,ClientGame.class); ini.putExtra(“_id”,id); 星触觉(ini); } },android,database,arraylist,Android,Database,Arraylist,} 这里的问题是textview上只显示两个ID。最后一个和当前。我想显示用户想要的所有ID。当然不是无限的。那么,我如何创建一个arraylist,比如说10个值,并每次存储id呢?您在列表中只添加了两个id,因此行为是正确的。如果多次创建活动,并且希望使用上次添加的值,则必须执行两项操作: 将列表声明为静态成员: 静态数组列表idList 更改分配方式,如下所示: public class ClientGame extends Activity implements OnClickList

}
这里的问题是textview上只显示两个ID。最后一个和当前。我想显示用户想要的所有ID。当然不是无限的。那么,我如何创建一个arraylist,比如说10个值,并每次存储id呢?

您在列表中只添加了两个id,因此行为是正确的。如果多次创建活动,并且希望使用上次添加的值,则必须执行两项操作:

  • 将列表声明为静态成员:

    静态数组列表idList

  • 更改分配方式,如下所示:

    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);             
        }
    
    }
    
    if(idList==null){ idList=newarraylist(); }

这会满足你的要求。我建议不要再次启动该活动,只要在单击按钮时更新TextView中的文本即可

编辑------

要更新TextView而不是再次启动活动,请执行以下操作:

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

}

我只是在现有文本的末尾添加了一个逗号和新id。当然,您可能希望使用不同的格式。显示文本和新文本应该足以获得所需的格式。

使用静态arraylist并确保获取ID。您是说我应该创建一个包含十个值(null)的arraylist,然后替换它们?如何使用arraylist中的特定idex替换值?否,仅在arraylist:)静态arraylist之前使用静态键。另一方面,你可以照你说的做,因为你给你选择的索引添加了值。是的,我想是这样,但我做不到。你能给我一个提示吗?我编辑了前面的答案,检查最后一部分如何避免再次开始活动。我的朋友,它成功了。谢谢但我不能完全理解它!如果你有时间,就给我发封电子邮件解释一下。再次感谢TextView可以随时更新,您只需创建新字符串。旧的是用getText方法检索的,请看,这将返回一个CharSequence,因此必须使用toString()将其转换为字符串。最后一步是将新id添加到现有字符串中,并将其设置回TextView。希望这能解释一切:)不是文本视图部分,数组列表部分是我不理解的(