Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 如何取消选择所选列表视图项?_Android_Android Listview_Custom Adapter - Fatal编程技术网

Android 如何取消选择所选列表视图项?

Android 如何取消选择所选列表视图项?,android,android-listview,custom-adapter,Android,Android Listview,Custom Adapter,在我的应用程序中,有一个从列表视图中选择不同项目的选项。选定的项目将存储到数组中,并且在listview中将为选定的项目设置背景。这很好。问题是,如果我以前选择了项目,我想取消选择该项目。我还想从所选项目数组中删除该项目。我已查找了数小时。请帮助我。提前感谢 list = (ListView) findViewById(R.id.list); // list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

在我的应用程序中,有一个从列表视图中选择不同项目的选项。选定的项目将存储到数组中,并且在listview中将为选定的项目设置背景。这很好。问题是,如果我以前选择了项目,我想取消选择该项目。我还想从所选项目数组中删除该项目。我已查找了数小时。请帮助我。提前感谢

    list = (ListView) findViewById(R.id.list);
            // list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

            adapter=new LocationListAdapter(mActivity, locationList);

            list.setAdapter(adapter);
            selectedlocations = new String[locationList.size()];

            list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub


                    if (selected != null) {

    //                  selected.setBackgroundResource(R.drawable.list_item_bg_pressed);
                    }

                    selected = view;
                    selected.setBackgroundResource(R.drawable.list_item_bg_pressed);

                    selecteditem = position;
                    selectedlocations[position] = locationList.get(selecteditem)
                            .getId();
                    ((LocationListAdapter)list.getAdapter()).toggleSelected(new Integer(position));

                    System.out.println("Selected position:" + selecteditem + ","
                            + selectedlocations[position]);


                }
            });
list=(ListView)findViewById(R.id.list);
//list.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
适配器=新的LocationListAdapter(MacActivity,locationList);
list.setAdapter(适配器);
selectedlocations=新字符串[locationList.size()];
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
如果(已选择!=null){
//已选择。setBackgroundResource(R.可绘制。列表项已按下);
}
选择=查看;
已选择。setBackgroundResource(R.可绘制。列表项已按下);
选择EdItem=位置;
selectedlocations[position]=locationList.get(selecteditem)
.getId();
((LocationListAdapter)list.getAdapter()).toggleSelected(新整数(位置));
System.out.println(“所选位置:+selecteditem+”,“
+选定的位置[位置];
}
});
您试过这个吗

myListView.clearChoices();
myAdapter.notifyDataSetChanged();

这将清除您所做的所有选择

在适配器中,使用列表存储选定对象。如果该列表已存在,请将其删除。还有一件事您无法从数组中删除元素,请使用列表

myListView.clearChoices();
myListView.requestLayout();
list = (ListView) findViewById(R.id.list);

            selectedlocations = new ArrayList<String>();

            list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub


                    if (selected != null) {

    //                  selected.setBackgroundResource(R.drawable.list_item_bg_pressed);
                    }

                    selected = view;
                    selected.setBackgroundResource(R.drawable.list_item_bg_pressed);

                    selecteditem = position;
                    String item = ""+locationList.get(selecteditem).getId();
                    if(selectedlocations.contains(item)){
                     selectedlocations.remove(item);
                    }else{
                    selectedlocations.add(item);
                    }

                    ((LocationListAdapter)list.getAdapter()).toggleSelected(new Integer(position));

                    System.out.println("Selected position:" + selecteditem + ","
                            + selectedlocations[position]);


                }
            });
list=(ListView)findViewById(R.id.list);
selectedlocations=new ArrayList();
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
如果(已选择!=null){
//已选择。setBackgroundResource(R.可绘制。列表项已按下);
}
选择=查看;
已选择。setBackgroundResource(R.可绘制。列表项已按下);
选择EdItem=位置;
String item=“”+locationList.get(selecteditem.getId();
如果(所选位置。包含(项目)){
所选位置。删除(项目);
}否则{
所选位置。添加(项目);
}
((LocationListAdapter)list.getAdapter()).toggleSelected(新整数(位置));
System.out.println(“所选位置:+selecteditem+”,“
+选定的位置[位置];
}
});

我认为您应该使用ArrayList而不是array,因为您不能从数组中删除元素。