我创建了这个代码,我有一个String数组。问题是我有一个来自另一个Intent的值,我想添加到数组中。我知道使用ArrayList要容易得多,但问题出在后面我已将值放到数组中,我想在Textview上设置数组的随机字符串,所以我使用
txtV1.setText(myStringArray[new Random().nextInt(myStringArray.length)]);
但这对于ArrayList是不可能的,因为它说:表达式的类型必须是数组类型,但它已解析为ArrayList
我用Google搜索但找不到任何解决方案。 希望你能帮帮我。
这是我的全部代码:
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)]);
答案 0 :(得分: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
来改变代码的可能性,我强烈推荐这种做法。
<强>更新强>
与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())));
答案 1 :(得分: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())));
答案 2 :(得分: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())));
你的问题就是其他问题,
答案 3 :(得分:0)
为什么不使用ArrayList&lt;&gt;而不是数组?
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));