我有一个奇怪的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
类型。
答案 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));
}
}