带有ListView CHOICE_MODE_MULTIPLE的Android onSelectedItemListener

时间:2011-12-23 23:42:51

标签: android events listview

我是Android开发的新手,我需要一些帮助。

在我开始提问之前,谢谢你的帮助。

好的,这是我的问题:

我有一个启用了CHOICE_MODE_MULTIPLE的listView。 有了这个,我可以在listView上选择一些元素。

我想在我的代码中使用项目选择作为事件,例如,当选择项目时,我想显示一个toast(选项“Item of Item”)。

我不知道如何做到这一点,我已经阅读了有关onSelectedItemListener的内容,但我不知道如何实现和使用它。

再次感谢您的帮助。

以下是此问题的解决方案:我列出了所选项目。要查看选择了哪个itel,我必须测试此项的id是否为列表。如果在内,则选择该项目,否则,不选择该项目。

listeCapteurs.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    if (!mSelectedIndices.contains(position))
        {
        mSelectedIndices.add(position);
        System.out.println("Liste:" +mSelectedIndices );
        }
    else
        {mSelectedIndices.remove((Integer)position);
        System.out.println("Liste:" +mSelectedIndices );
        }
        Log.i(null, "Clicked item position = " + position );       
}});
}

2 个答案:

答案 0 :(得分:1)

您是否阅读了'Hello ListView demo'?它演示了如何使用OnItemClickListener。现在,这可能不是您所追求的,但从实施的角度来看,添加OnItemSelectedListener是完全相同的:

listview.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // do something...
    }
}

根据以下评论进行编辑。

在填充列表后,您可以尝试将选择显式设置为特定项,以查看是否触发OnItemSelected。假设您的列表中至少有两个项目:

listview.setSelection(1); // select second item

// Edit2:实际上,阅读documentation for setSelection可能不会产生任何影响。

  

设置当前选定的项目。 如果处于触摸模式,则该项目不会   被选中但它仍然会被恰当地定位。 (...)

或者,您可以使用OnItemClickListener自行跟踪所选项目,假设点击项目时没有其他操作 - 这在仅具有触摸屏的设备上有意义,因为无法区分“选择”并'点击'。

List<Integer> mSelectedIndices = new ArrayList<Integer>();
//...
listview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (!mSelectedIndices.contains(position)) {
            mSelectedIndices.add(position);
        } else {
            mSelectedIndices.remove((Integer)position);
        }
    }
}

我猜你在某些时候想要对所选项目做些什么,所以你可以迭代上面的列表并抓住被点击/选中的对象。

答案 1 :(得分:0)

看起来应该是这样的......

lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {

  // When clicked, show a toast with the TextView text
  Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
      Toast.LENGTH_SHORT).show();
}

});