Android:在全局变量中存储选定的ListView项

时间:2015-04-24 17:56:05

标签: android listview variables android-activity global

我有两项活动。

第一个活动包含一个填充的ListView小部件:

String products[] = {"Pull Restaurant names here", "Res. 1", "Res abc", "Res foo", "Res hello",
    "Res xyz", "Res test", "Res test2", "Denny's"};

lv = (ListView) findViewById(R.id.listView);

// Adding items to listview
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, products);
lv.setAdapter(adapter);

用户从列表中选择一个项目后,我会加载一个新的活动:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        android.content.Intent intent = new android.content.Intent(GuestPage.this, RestaurantProfile.class);
        startActivity(intent);
    }
});

我希望能够将ListView中的选定项字符串存储到全局变量中。我有一个扩展应用程序的Global类,我在清单中包含了必要的名称标签。我正在使用类似的东西:

Globals g = (Globals)getApplication();
g.setData(String s);

以设置全局变量。

我的问题是存储选定的ListView项目,因为我不知道如何调用它。我没有使用任何xml项目文件来填充我的ListView。我如何知道选择了哪个项目以及如何将其存储到我的全局变量中?

例如:用户选择“Res foo”。加载了新活动,我有一个全局变量,可以在包含字符串“Res foo”的所有活动中使用。 感谢。

3 个答案:

答案 0 :(得分:1)

你对Globals的所作所为是一种非常糟糕的做法。相反,看看这个解决方案在活动之间传递数据。

https://stackoverflow.com/a/7325248/3474528

要获取所选字符串,您需要执行以下操作:

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    String selected = products[position];
    ....
 }                              

答案 1 :(得分:0)

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
        String selectedFromList = (String) (lv.getItemAtPosition(myItemInt));
        android.content.Intent intent = new android.content.Intent(GuestPage.this, RestaurantProfile.class);
        startActivity(intent);
    }                  
});

我希望这能解决你的问题:)

答案 2 :(得分:0)

public void onItemClick(AdapterView<?> parent, View view, int position, long id)

int position保存在ListView中单击的项目的索引。

然后您可以使用该位置获取文本:

String theText = (ListView)parent.getItemAtPosition(position);