2011-02-23 46 views
0

我有2个按钮,当你点击它们时,它会启动一个新的listView活动。在它开始活动之前,我做了一个包,putString取决于哪个按钮被点击并putExtras。传递附加到列表视图ArrayAdapter

在listView活动中,我有两个字符串数组。我想ArrayAdapter getExtras并读取变量,所以我知道哪个按钮被按下到那里,然后我会知道哪个字符串数组加载到ArrayAdapter。

这是我的想法,但ArrayAdapter不接受字符串,即使s =字符串数组之一的名称。另外,我不确定我是否以最好的方式接近这一点。

Bundle b = this.getIntent().getExtras(); 
    String s = b.getString("TEXT"); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, s)); 

回答

2

数组适配器需要的对象的列表作为第三个参数作为公共构造文档建议(来源Developer Android):

Constructor 
ArrayAdapter(Context context, int textViewResourceId, T[] objects) 
Constructor 
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) 
Constructor 
ArrayAdapter(Context context, int textViewResourceId, List<T> objects) 
Constructor 
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) 

所以你只需要封装你String将数组(即使你只有一个字符串可以显示)。

ArrayList<String> arr = new ArrayList<String>(); 
arr.add(s); 
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, arr)); 

编辑 确定。你为什么不尝试一个非常基本的if-else语句?喜欢:

ArrayList<String> arrButton1 = new ArrayList<String>(); 
ArrayList<String> arrButton2 = new ArrayList<String>(); 
ArrayList<String> arrToChoose; 
if(s.equals("button1")) { 
    arrToChoose = arrButton1; 
} else if(s.equals("button2")) { 
    arrToChoose = arrButton2; 
} 
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, arrayToChoose)); 
+0

我试过了,但后来它只显示我的变量。如果s =“button1”,如果我将它封装在数组中,唯一出现在listView中的是button1。我试图在这个活动中加载一个名为button1的字符串数组的内容。 – Roger 2011-02-23 22:24:03

+0

好的。我希望我明白你想要解决什么问题。基本上你想显示一个或另一个数组,取决于用户是通过点击一个按钮还是另一个来进行该活动?看到我的编辑... – 2011-02-23 22:35:19

+0

这工作,谢谢。 – Roger 2011-02-23 22:42:25