0

我创建了这段代码,我有一个字符串数组。问题是我有一个来自另一个 Intent 的值,我想将它添加到数组中。我知道使用 ArrayList 更容易,但问题是在我输入之后数组的值我想在 Textview 上设置数组的随机字符串,所以我使用

txtV1.setText(myStringArray[new Random().nextInt(myStringArray.length)]);

但这对于 ArrayList 是不可能的,因为它说:表达式的类型必须是数组类型,但它解析为 ArrayList

我用谷歌搜索但找不到任何解决方案。希望您能够帮助我。

这是我的整个代码:

String[] myStringArray = {"Object1","Object2","Object3"};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_main);
    txtV1=(TextView)findViewById(R.id.textView1);

Bundle extras = getIntent().getExtras();
        String value = extras.getString("key");//this value I want to add to the array

txtV1.setText(myStringArray[new Random().nextInt(myStringArray.length)]);
4

4 回答 4

0

您可以使用 ArrayList 保存您的字符串,然后在需要时使用 get(int) 检索特定的 String 或 toArray() 将列表转换为字符串数组。

ArrayList <String> array = new ArrayList<String>();
array.add(new String("Object1"));
array.add(new String("Object2"));
array.add(new String("Object3"));

setText(array.get(new Random().nextInt(array.size())));
于 2013-04-13T18:36:23.683 回答
0

为什么不使用 ArrayList<> 而不是数组?

ArrayList<String> myStrings = new ArrayList<String>(Arrays.asList("Object1","Object2","Object3"));

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_main);
    txtV1=(TextView)findViewById(R.id.textView1);

    Bundle extras = getIntent().getExtras();
    String value = extras.getString("key");

    myStrings.add(value);
    int randomIndex = new Random().nextInt(myStrings.size());
    txtV1.setText(myStrings.get(randomIndex));
于 2013-04-13T19:00:27.847 回答
0

我建议将 System.arraycopy 用于扩展数组,如下所示:

String[] oldArray = {"Object1","Object2","Object3"};
String[] newArray = new String[oldArray.length + 1];
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);

String randomValue = newArray[new Random().nextInt(newArray.length)];

这会留下最后一个空间,您可以随意填充String

或者,根据您的意愿和变量:

String[] myStringArray = {"Object1","Object2","Object3"};
String[] myNewStringArray = new String[myStringArray.length + 1];
System.arraycopy(myStringArray, 0, myNewStringArray, 0, myStringArray.length);
myNewStringArray[myNewStringArray.length - 1] = extras.getString("key");

txtV1.setText(myNewStringArray[new Random().nextInt(newArray.length)]);

尽管如果您发现使用 来改变您的代码的任何可能性ArrayList,我强烈推荐这种方法。

更新

与 a 相同的方法ArrayList

List<String> myList = new ArrayList( myArray ); // Or Arrays.asList("Object1", "Object2", "Object3"); if you'd like to hardcode initial values.
myList.add(extras.getString("key");
txtV1.setText(myList.get(new Random().nextInt(myList.size())));
于 2013-04-13T18:33:47.800 回答
0

这对我来说很好

Random rand = new Random();
ArrayList<String> myArray = new ArrayList<String>();
myArray.add("MyKey");
myArray.add("MyKey2");
myArray.add("MyKey3");
TextView myTextView = new TextView(null); 
myTextView.setText(myArray.get(rand.nextInt(myArray.length())));

你的问题是这个,

于 2013-04-13T18:41:03.260 回答