从列表视图中获取所选项目

时间:2012-11-13 02:39:06

标签: android android-intent

我已经做了一些搜索,这个论坛上没有任何问题似乎与我的相符。

我想要完成的任务:
我的应用中有列表视图。当我选择和项目时,我希望应用程序能够读取该项目的内容并执行我希望它做的相应操作。
我正在制作的App是一款基于文本的RPG游戏。例如:你进入商店,你会在列表视图内看到一个100金的“青铜头盔”。当你点击青铜头盔时,我希望它能够理解,“用户点击青铜头盔,从那些用户的钱中减去100金币给他头盔”

我尝试了什么:

if (MeleeArmourList.getItemAtPosition(1).toString() == "(100G) Bronze Helmet") {
                int gold Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 100;
                textViewShopGoldValue1.setText("" + gold);
            }

现在完美无缺。但是这里有几行代码来演示正在发生的事情:

if (MeleeArmourList.getItemAtPosition(2).toString() == "(250G) Bronze Chestplate") {
                int gold = Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 250;
                textViewShopGoldValue1.setText("" + gold);
            }
if (MeleeArmourList.getItemAtPosition(3).toString() == "(125G) Bronze Leggings") {
                int gold = Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 125;
                textViewShopGoldValue1.setText("" + gold);
            }
if (MeleeArmourList.getItemAtPosition(4).toString() == "(100G) Bronze Boots") {
                int gold = Integer.parseInt(textViewShopGoldValue1.getText().toString()) - 100;
                textViewShopGoldValue1.setText("" + gold);
            }

所以现在发生的事情是:当我点击“青铜头盔”时,它不仅减去了头盔上的100颗金币,还减去了胸甲,护腿等的金币......

所以我的问题是:
如何让应用程序单独读取一行并将其与选定的字符串进行比较?我也试过:“getSelectedItem()”但是这给了我一个nullPointerException。

有什么想法吗?

编辑

MeleeArmourList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

            if (MeleeArmourList.getSelectedItemPosition() == 1) {
                int gold = Integer.parseInt(textViewShopGoldValue1
                        .getText().toString()) - 100;
                textViewShopGoldValue1.setText("" + gold);
            }
        }

    });

3 个答案:

答案 0 :(得分:1)

传递给int的{​​{1}}参数是单击的列表项的位置,因此无需调用任何其他方法来检索它。

如果我正确理解您的目标,您可以使用类似于以下内容的内容:

onItemClick()

答案 1 :(得分:0)

getItemAtPosition返回与该位置相关联的项目,无论其是否被选中。

您似乎想要在选择项目时设置回调: setOnItemSelectedListener似乎是正确的方法。

请参阅getItemAtPositionsetOnItemSelectedListener

的文档

答案 2 :(得分:0)

if (MeleeArmourList.getItemAtPosition(1).toString() == "(100G) Bronze Helmet"){
}

您正在将字符串内容与==运算符

进行比较

尝试使用equals()运算符

if ("(100G) Bronze Helmet".equals(MeleeArmourList.getItemAtPosition(1).toString() )){
}

 if (MeleeArmourList.getItemAtPosition(1).toString().equals("(100G) Bronze Helmet"))
       {

        }

您可以使用此代码检查所选项目位置

listView.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    Toast.makeText(getApplicationContext(),
      "Click ListItem Number " + position, Toast.LENGTH_LONG)
      .show();
  }
});