将附加内容传递给listView ArrayAdapter

时间:2011-02-23 22:11:29

标签: android

我有2个按钮,当您单击它们时,它会启动一个新的listView活动。在它开始活动之前,我根据单击的按钮和putExtras创建一个bundle,putString。

在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));

1 个答案:

答案 0 :(得分: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));