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