ArrayList <string>排序问题

时间:2015-07-26 17:40:40

标签: java android arraylist

我有一个奇怪的ArrayList问题。当我使用下面的代码在硬编码值中填充List时,它可以正常工作。

    ProfileCreds = new ArrayList<String>();

    ProfileCreds.add(0,"user");
    ProfileCreds.add(1,"password");
    ProfileCreds.add(2,"host");
    ProfileCreds.add(3,"port");

    Log.d("user", ProfileCreds.get(0));
    Log.d("pass", ProfileCreds.get(1));
    Log.d("host", ProfileCreds.get(2));
    Log.d("port", ProfileCreds.get(3));

    //I get correct order as it should be 

但是当我使用来自用户的输入填充相同的ArrayList时,我发现列表索引的顺序与添加时的顺序不同。代码几乎相同。只有硬编码的字符串才会被视图输入替换。

    ProfileCreds = new ArrayList<String>();

    ProfileCreds.add(0,SSHUser.getText().toString());
    ProfileCreds.add(1,SSHPassword.getText().toString());
    ProfileCreds.add(2,SSHServer.getText().toString());
    ProfileCreds.add(3,SSHPort.getText().toString());

    Log.d("user", ProfileCreds.get(0));
    Log.d("pass", ProfileCreds.get(1));
    Log.d("host", ProfileCreds.get(2));
    Log.d("port", ProfileCreds.get(3));

    //Output i get
    user : [value of host]
    pass : [value of pass]
    host : [value of user]  
    port : [value of port] 

我没有在任何地方使用列表,也没有应用排序。此外,我在一个活动内的onClick处理程序中执行所有这些操作,并且视图都是EditText类型。

2 个答案:

答案 0 :(得分:0)

尝试仅使用ProfileCreds.add(String)代替ProfileCreds.add(int, String)

ProfileCreds.add(SSHUser.getText().toString());
ProfileCreds.add(SSHPassword.getText().toString());
ProfileCreds.add(SSHServer.getText().toString());
ProfileCreds.add(SSHPort.getText().toString());

答案 1 :(得分:0)

在Android上,Log方法将标记字符串作为第一个参数。遵循最佳实践,您可以将最终静态字符串TAG定义为具有一个值,例如应用程序名称或类。对Log方法的调用将如下所示:

public class YourActivity extends Activity {
    private static final String TAG = "MyAppName";

    private void someMethod() {
        Log.d(TAG, "user=" + ProfileCreds.get(0));
    }

}