Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onSelectedItemListener,具有列表视图选项\u模式\u多个_Android_Events_Listview - Fatal编程技术网

Android onSelectedItemListener,具有列表视图选项\u模式\u多个

Android onSelectedItemListener,具有列表视图选项\u模式\u多个,android,events,listview,Android,Events,Listview,我是Android开发的新手,需要一些帮助 在我开始提问之前,谢谢你的帮助 好的,这是我的问题: 我有一个启用了选项_MODE _MULTIPLE的列表视图。 有了它,我可以在listView上选择一些元素 我想在我的代码中使用项目选择作为事件,例如,当项目被选中时,我想显示一个toast(项目“项目名称”被选中) 我不知道如何做到这一点,我读过一些关于onSelectedItemListener的文章,但我不知道如何实现和使用它 再次感谢你的帮助 下面是这个问题的解决方案:我列出了所选项目。要

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

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

好的,这是我的问题:

我有一个启用了选项_MODE _MULTIPLE的列表视图。 有了它,我可以在listView上选择一些元素

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

我不知道如何做到这一点,我读过一些关于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 );       
}});
}
ListCapters.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
如果(!mselectedDices.contains(位置))
{
mselectedDices.add(位置);
System.out.println(“列表:+mselectedDices”);
}
其他的
{mselectedDices.remove((整数)位置);
System.out.println(“列表:+mselectedDices”);
}
Log.i(null,“单击的项目位置=“+位置”);
}});
}

它应该是这样的

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();
}
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//单击后,显示带有文本视图文本的祝酒词
Toast.makeText(getApplicationContext(),((TextView)视图).getText(),
吐司。长度(短)。show();
}

}))

你看过这本书了吗?它演示了如何使用
侦听器
。现在,这可能不是您想要的,但是从实现的角度来看,添加一个
OnItemSelectedListener
是相同的:

listview.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // do something...
    }
}
//Edit2:事实上,这可能不会有什么不同,阅读

设置当前选定的项目如果处于触摸模式,则项目将不显示 被选中,但仍将正确定位。(……)

或者,您可以使用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);
        }
    }
}
List mSelectedIndices=new ArrayList();
//...
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(!mselectedDices.contains(位置)){
mselectedDices.add(位置);
}否则{
mselectedDices.remove((整数)位置);
}
}
}

我猜在某个时候你会想对所选的项目做些什么,这样你就可以在上面的列表上迭代并抓取单击/选择的对象。

Hi coder_For_Life22,非常感谢你的回答。你的解决方案很好,但我需要知道我选择的项目,而不仅仅是单击它。你能建议我吗e另一个解决方案请?谢谢你..那么你需要知道行的ID吗?例如..行1,2,3,4我已经找到了解决方案,非常感谢你的帮助,这个论坛非常好…亲爱的MH.,非常感谢你的回答。coder_for_Life22给出的解决方案正在工作,但正如你所说,我需要
OnItemSelectedListener
我无法实现它。当我只通过
OnItemSelectedListener
更改
OnItemClickListener
时,第二个就不起作用了。我尝试放置一个
System.out.println(“你好”)
并且它与
OnItemClickListener
一起工作,但与
OnItemSelectedListener
没有任何关系。你能详细说明一下“我无法实现”和“不工作”吗?我不能100%肯定这种方法在使用触摸交互时有效。当你显式调用
setSelection(…)时会发生什么
?或者,您可以使用OnItemClickListener保留单击/选定项目的列表:只需添加一个项目(或至少添加索引)如果它还不在单击的项目列表中,则将其删除。再次感谢您的帮助。更准确地说,我可以实现此方法,但当我从listview中选择一个项目时,不会发生任何事情,我的println不会执行。当我调用setSelection(…),嗯,这是什么?恐怕我不明白添加索引的方法,你能给我更多的细节吗???我添加了一些代码来说明我在上面的评论中提到的基本思想。哦,谢谢,这是一个好主意。关于SetPositio(),当我明确地执行此操作时,不会发生任何事情。在表的哪个方面,是的,我需要知道选择了哪个项目,然后对此进行处理。我对此代码有一个小问题:
!mSelectedIndices.contains(position)?mSelectedIndices.add(position):mSelectedIndices.remove((Integer)position);
我不懂,Eclipse给了我一些错误。非常感谢您的帮助。
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 );       
}});
}